如何检查String是否为null

Oti*_*iel 37 c# null

我想知道是否有一个特殊的方法/技巧来检查一个String对象是否为空.我知道这个String.IsNullOrEmpty方法,但我想区分一个nullString和一个空String(= "").

我应该简单地使用:

if (s == null) {
    // blah blah...
}
Run Code Online (Sandbox Code Playgroud)

......还是有另一种方式?

Jon*_*eet 60

一个对象不能为空-一个的值表达可以为空.值得在你的脑海中清楚地发挥作用.值s不是对象 - 它是引用,它是null或引用对象.

是的,你应该使用

if (s == null)
Run Code Online (Sandbox Code Playgroud)

请注意,这仍将使用在字符串中定义的重载==运算符,但这将做正确的事情.


Oli*_*lay 14

您可以使用空合并双重问号来测试字符串或其他可空值类型中的空值:

textBox1.Text = s ?? "Is null";
Run Code Online (Sandbox Code Playgroud)

运营商 '??' 询问's'的值是否为null,如果不是则返回's'; 如果为null,则返回运算符右侧的值.

更多信息:https: //msdn.microsoft.com/en-us/library/ms173224.aspx

还值得注意的是有一个零条件运算符?和?[在VS2015的C#6.0(和VB)中引入

textBox1.Text = customer?.orders?[0].description ?? "n/a";
Run Code Online (Sandbox Code Playgroud)

如果description为null,或者如果order为null,或者customer为null,则返回"n/a",否则返回description的值.

更多信息:https: //msdn.microsoft.com/en-us/library/dn986595.aspx


小智 14

可以肯定的是,你应该使用函数来检查null和empty,如下所示:

string str = ...
if (!String.IsNullOrEmpty(str))
{
...
}
Run Code Online (Sandbox Code Playgroud)

  • 作者想要确切地检查null(非null或空). (3认同)

Mis*_*sky 6

如果您正在使用C# 7.0或以上,您可以使用is null

if (s is null) {
    // blah blah...
}
Run Code Online (Sandbox Code Playgroud)

另请注意,在使用字符串时,您可能会考虑使用IsNullOrWhiteSpace它来验证字符串不仅仅包含空格。