W Visual Basic wartości domyślne są określane dla:
Optional i inicjalizatora.Public Sub LogMessage(message As String, Optional level As String = "INFO") Console.WriteLine($"[{level}]: {message}") End Sub ' Wywołanie bez drugiego argumentu - będzie 'INFO' LogMessage("Test")
Public Property Status As String = "Undefined"
Cechy szczególne:
Czy można określić wartość domyślną dla parametru typu obiektu (np. klasy) w VB.NET?
Odpowiedź: Nie, dla parametrów Optional dozwolone są tylko wyrażenia stałe, czyli typy danych wartościowych i ciągi. Dla obiektów można jedynie użyć wartości Nothing, a jeśli potrzebny jest obiekt — należy go utworzyć w ciele metody:
Public Sub DoWork(Optional obj As SomeClass = Nothing) If obj Is Nothing Then obj = New SomeClass() End If ' ... End Sub
Historia
System finansowy: Przy dodawaniu nowego parametru z wartością Optional programista umieścił go nie na końcu listy. Całe wywołanie kompilowało się, ale parametry zostały przesunięte, co prowadziło do niewłaściwego przekazywania wartości.
Historia
System raportowania: Używano właściwości z automatyczną inicjalizacją (VB.NET 2010+), ale zapomniano uwzględnić logikę przesłaniania wartości z konstrukcji, przez co domyślna wartość nie była zawsze poprawnie nadpisywana.
Historia
Integracja z zewnętrznym API: W próbie ustawienia obiektu jako wartości domyślnej dla parametru Optional wystąpił błąd kompilacji, co opóźniło wydanie i wymagało obszernego refaktoryzowania sygnatur metod.