我的同事们对我不满,因为根据我们的sourcesafe,我在方法属性中添加了括号,从而导致堆栈溢出。 因为我确定我没有故意这样做,我想知道我是否使用了一个不起眼的快捷方式来执行这些更改。
这种东西:
Public Function Opslaan() As Boolean
If something_wrong() Then
opslaan = False
End If
If opslaan = False Then
Do_Something_Else()
End If
Return opslaan
End Function
这变成了:
Public Function Opslaan() As Boolean
If something_wrong() Then
opslaan = False
End If
If opslaan() = False Then '' See the parentheses here added automatically
Do_Something_Else()
end If
Return opslaan
End Function
感谢任何帮助。
答案 0 :(得分:2)
这看起来好坏的旧VB6代码转换为VB.NET。
问题是VB6允许您将当前函数名称视为变量并在整个方法中更新其值。然后,当您退出该方法时,此变量所具有的任何值都将返回给调用者。这种语法令人困惑,永远不应该使用,即使在VB6中也是如此,因为有更好的方法。
将您发现的所有代码更新为:
Public Function Opslaan() As Boolean
Dim result As Boolean = True
If something_wrong() Then
result = False
end if
If result = False Then
Do_Something_Else()
End If
Return result
End Function
这是更清晰的代码,永远不会错误地调用相同的例程。
此外,这是完全个人偏好,但我更倾向于不使用equals语句检查布尔值。因此If result = False Then
变为If Not result Then
而If result = true Then
变为If result Then
。对于布尔人来说,这对我来说几乎总是让我感觉更清洁。