Określanie argumentów opcjonalnych dla argumentów struktury

Data utworzenia strony :

Opcjonalne argumenty umożliwiają nadanie wartości początkowej argumentowi bez przeciążania metody z różną liczbą argumentów.

Jednak tylko stałe, takie jak "10", "Próbka" i "null" mogą być określone jako opcjonalne argumenty i nie można określić wartość, która została utworzona w nowym lub zdefiniowanym przez statyczny odczyt, który jest określany podczas uruchamiania programu.

To samo dotyczy, jeśli struktura jest argumentem. Na przykład, jeśli typem jest IntPtr, nie można określić IntPtr.Zero jako wartość początkową. Nie można określić 0 i nie może być null, ponieważ jest strukturą. (Nullable pozwala określić null, ale wyklucza, ponieważ zmienia się typ argumentu.)

Aby użyć struktury jako opcjonalnego argumentu, można użyć argumentu "default(T). Jest to równoważne wartości utworzonej przy nowym T().

public void DoAction(IntPtr handle = default(IntPtr))
{
  // 処理
}

Można określić tylko 0 lub null dla każdej wartości w strukturze, więc przeciążyć metodę, jeśli chcesz podać wartość początkową oddzielnie.