構造体の引数に省略可能な引数を指定する
ページ作成日 :
「省略可能な引数」を使用することにより、引数の数の異なるメソッドをオーバーロードしなくても引数に初期値を与えることができるようになります。
しかし、省略可能な引数に指定できるのは「10」や「"Sample"」「null」などの定数のみであり、プログラム実行時に決定される new で作成したものや static readonly で定義された値などは指定できません。
構造体を引数に持つ場合も同様です。たとえば型が IntPtr の場合、IntPtr.Zero を初期値として指定することができません。0 を指定することもできませんし、構造体なので null を指定することもできません。(Nullable を使えば null を指定できますが、引数の型が変わるので除外します)
省略可能な引数として構造体を使用する場合は「default(T)」が使用できます。これは new T() で作成した値と同等になります。
public void DoAction(IntPtr handle = default(IntPtr))
{
// 処理
}
あくまでも構造体の各値に 0 や null を指定できるだけですので、別途初期値を与えたい場合はメソッドをオーバーロードしてください。