VB:圆括号自动添加错误

时间:2014-10-28 14:45:59

标签: vb.net parentheses

我的同事们对我不满,因为根据我们的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

感谢任何帮助。

1 个答案:

答案 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 ThenIf result = true Then变为If result Then。对于布尔人来说,这对我来说几乎总是让我感觉更清洁。