String.IsNullOrEmpty() (String.IsNullOrEmpty())


問題描述

String.IsNullOrEmpty() (String.IsNullOrEmpty())

Recently I've noticed that when we've been doing string comparisons in our .NET code we have been safeguarding against null references. This check seems unnecessary in VB.NET because it overloads the equality operator and performs this null ref check for us. Do you all agree ?

See examples below: 

        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

‑‑‑‑‑

參考解法

方法 1:

Specifically for equality tests you may be right.  However, equality tests are not the only thing you do with strings.

I have not done much VB.Net, but I strongly suspect that 

myStringVariable.Length

will blow up if myStringVariable is null, er... Nothing.

方法 2:

It's never unnecessary to be explicit about what you're doing.  If someone who is working on your code reads String.IsNullOrEmpty they know that you meant treat null and empty the same way.

If someone who is working on your code reads myStringVariable = String.Empty, they have to wonder if you meant to handle nulls and empties the same way or if you made an oversight.

方法 3:

You're right, combining all of those checks is hella redundant.

Why not simplify it to simply:

If String.IsNullOrEmpty(myStringVariable) Then
    ' do whatever
End If

(by BobbyEric J.Pete BaughmanCody Gray)

參考文件

  1. String.IsNullOrEmpty() (CC BY‑SA 3.0/4.0)

#.net-3.5 #vb.net #.net






相關問題

如何在 C# 中搜索 pdf 中的文本(執行匹配) (How to search text (Exect match) in pdf in C#)

String.IsNullOrEmpty() (String.IsNullOrEmpty())

是否有可以綁定的可為空的日期選擇器? (Is there a nullable datepicker that I can bind to?)

具有自動命名屬性的通用組合框 (Generic ComboBox with automatically named properties)

在數據庫未定義的外鍵關係上配置實體框架 (Configuring Entity Framework on a Database Undefined Foreign Key Relationships)

我可以在 4.0 應用程序中引用 .NET 3.5 .DLL 嗎? (Can I reference a .NET 3.5 .DLL in a 4.0 app?)

如何在 ASP.NET、VB.NET 中解決這個會話問題? (How to tackle this session problem in ASP.NET,VB.NET?)

在 ADO.NET 數據服務中添加對查找表的引用 (Adding a reference to a lookup table in ADO.NET Data Services)

如何優化 Linq to Xml 查詢反對屬性? (How do I optimize a Linq to Xml query againist attributes?)

VS2005 和 LINQ (VS2005 and LINQ)

時區信息錯誤? (TimeZoneInfo error?)

與標準 C++ 相比,C++/CLI(以前稱為“託管 C++”)有哪些優勢? (What are the advantages of C++/CLI (formerly "Managed C++") over standard C++?)







留言討論