В Visual Basic значения по умолчанию задаются для:
Optional и инициализатора.Public Sub LogMessage(message As String, Optional level As String = "INFO") Console.WriteLine($"[{level}]: {message}") End Sub ' Вызов без второго аргумента - будет 'INFO' LogMessage("Test")
Public Property Status As String = "Undefined"
Особенности:
Можно ли задать значение по умолчанию для параметра типа объекта (например, класса) в VB.NET?
Ответ: Нет, для Optional-параметров допустимы только постоянные выражения, то есть типы значимых данных и строки. Для объектов можно лишь использовать значение Nothing, а если нужен объект — его следует создавать в теле метода:
Public Sub DoWork(Optional obj As SomeClass = Nothing) If obj Is Nothing Then obj = New SomeClass() End If ' ... End Sub
История
Финансовая система: При добавлении нового параметра с Optional-значением разработчик указал его не в конце списка. Весь вызов компилировался, но параметры сдвинулись, что привело к неправильной передаче значений.
История
Система отчётности: Применяли свойства с авто-инициализацией (VB.NET 2010+), но забыли предусмотреть логику переопределения значений из конструкции, из-за чего дефолтное значение перезаписывалось не всегда корректно.
История
Интеграция с внешним API: В попытке установить объект в качестве значения по умолчанию для параметра Optional возникла ошибка времени компиляции, что затянуло релиз и потребовало масштабного рефакторинга сигнатур методов.