MSDN mówi o Optional Parameters dla Visual Basic
Dla każdego parametru opcjonalnego, należy określić Stałe wyrażenie jako domyślna wartość tego parametru. Jeśli wyrażenie ma wartość Nic, domyślna wartość typu danych wartości jest używana jako domyślna wartość parametru.
Nie można więc używać tej składni, a nie można napisać coś takiego
Private Sub Test(a As Integer, Optional c As Color = Nothing)
If c = Nothing Then
c = Color.Black ' your default color'
End If
......
End Sub
tego samego kodu napisanego w C# jest następujący
private void Test(int a, Color c = default(Color))
{
if (c.IsEmpty)
c = Color.Black;
}
W języku C# nie można testować typ wartości (np. kolor, punkt, wielkość itp.) względem wartości pustej. Te typy nigdy nie są puste, ale mają domyślną wartość dla typu- (jak 0 dla liczb całkowitych), więc jeśli musisz przekazać opcjonalny parametr dla typu wartości, możesz utworzyć go za pomocą słowa kluczowego new
z wartościami, które jak używać jako domyślnego lub używać default
keyword i niech framework decyduje, która wartość jest domyślna dla typu. Jeśli pozwolisz ramom wybrać, wówczas właściwość IsEmpty będzie prawdziwa.
To dziwne, że w C# kompilator nie pozwoli mi zadeklarować „Color c = null” podczas deklarowania parametru. Skarżyło się, że nie może przydzielić wartości null dla typu wartości. Musiałem powiedzieć "Kolor c = nowy kolor()", a następnie w moim teście kodu dla "c.IsEmpty". –
@BillGregg dodał wersję C# – Steve