Visual Basic'de varsayılan değerler şunlar için belirlenir:
Optional anahtar kelimesi ve başlatıcı ile.Public Sub LogMessage(message As String, Optional level As String = "INFO") Console.WriteLine($"[{level}]: {message}") End Sub ' İkinci argüman olmadan çağırma - 'INFO' olacaktır. LogMessage("Test")
Public Property Status As String = "Undefined"
Özellikler:
VB.NET'de bir nesne türü için varsayılan değer belirlemek mümkün mü?
Cevap: Hayır, Optional parametreleri için yalnızca sabit ifadeler, yani değerli veri türleri ve stringler kullanabilir. Nesneler için sadece Nothing değeri kullanılabilir, eğer bir nesne gerektiriyorsa, metoda dâhil edilmelidir:
Public Sub DoWork(Optional obj As SomeClass = Nothing) If obj Is Nothing Then obj = New SomeClass() End If ' ... End Sub
Hikaye
Finans sistemi: Yeni bir parametre eklerken Optional değer belirleyen geliştirici, bunu liste sonunda belirtmedi. Tüm çağrı derlendi, ancak parametreler kaydırıldı, bu da değerlerin yanlış iletilmesine neden oldu.
Hikaye
Raporlama sistemi: Otomatik başlatma özellikleri (VB.NET 2010+) kullandılar, ancak yapıdan değerleri yeniden belirleme mantığını göz ardı ettiler, bu nedenle varsayılan değer her zaman doğru bir şekilde yeniden yazılmadı.
Hikaye
Harici API ile entegrasyon: Optional parametre için varsayılan değer olarak nesne ayarlamaya çalışırken derleme zamanında hata meydana geldi, bu da yayın sürecini uzattı ve yöntem imzalarının büyük bir yeniden yapılandırmasını gerektirdi.