在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参数的默认值时出现了编译时错误,这延迟了发布并需要大规模重构方法签名。