0

最近我注意到,当我们在 .NET 代码中进行字符串比较时,我们一直在防范空引用。这个检查在 VB.NET 中似乎是不必要的,因为它重载了相等运算符并为我们执行这个 null ref 检查。大家同意吗?

请参阅以下示例:

        Dim myStringVariable As String

        ' Unnecessary in VB.NET
        If myStringVariable Is Nothing OrElse myStringVariable = "" Then
        End If

        ' Unnecessary in VB.NET
        If String.IsNullOrEmpty(myStringVariable) Then
        End If

        ' This will work
        If myStringVariable = "" Then
        End If

        ' Also acceptable if you don't like using hard coded constants
        If myStringVariable = String.Empty Then
        End If
4

3 回答 3

3

特别是对于平等测试,您可能是对的。但是,相等性测试并不是您对字符串所做的唯一事情。

我没有做太多的VB.Net,但我强烈怀疑

myStringVariable.Length

如果 myStringVariable 为空,就会爆炸,呃......什么都没有。

于 2012-08-09T02:10:41.440 回答
3

从来没有必要明确说明你在做什么。如果正在处理您的代码的人阅读String.IsNullOrEmpty他们知道您的意思是用同样的方式处理 null 和 empty。

如果正在处理您的代码的人阅读myStringVariable = String.Empty,他们必须想知道您是否打算以相同的方式处理空值和清空,或者您是否疏忽了。

于 2012-08-09T02:11:02.523 回答
0

你是对的,结合所有这些检查是多余的。

为什么不将其简化为:

If String.IsNullOrEmpty(myStringVariable) Then
    ' do whatever
End If
于 2012-08-09T02:10:24.570 回答