如何检查String是否为null

时间:2011-09-26 10:11:32

标签: c# null

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

我应该简单地使用:

if (s == null) {
    // blah blah...
}

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

6 个答案:

答案 0 :(得分:55)

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

是的,你应该使用

if (s == null)

请注意,这仍将使用字符串中定义的重载==运算符,但这样做是正确的。

答案 1 :(得分:10)

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

string str = ...
if (!String.IsNullOrEmpty(str))
{
...
}

答案 2 :(得分:9)

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

textBox1.Text = s ?? "Is null";

操作员'??'询问'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";

如果description为null,或者如果订单为null,或者customer为null,则返回“n / a”,否则返回description的值。

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

答案 3 :(得分:0)

适用于 .net 5(可能也适用于 .net Core 3.1)

编写的可能性不同,但问题始终相同。

string wep = test ?? "replace";
Console.WriteLine(wep);

结果:“替换”

string test=null;
test ??= "replace";
Console.WriteLine(test);
test="";
test??="replace";
Console.WriteLine(test);
  • 第一次尝试:“替换”
  • 第二次尝试:空白
string test="";
if(test is null)
    Console.WriteLine("yaouh");
else
    Console.WriteLine("Not yahouu");

结果:“不是雅虎”

答案 4 :(得分:0)

如果您使用的是 C# 7.0 或更高版本,则可以使用 is null

if (s is null) {
    // blah blah...
}

另外,请注意,在处理字符串时,您可能还考虑使用 IsNullOrWhiteSpace,它也将验证字符串是否仅包含空格。

答案 5 :(得分:-5)

您可以在下面的注释中输入null或Number。

首先,您可以在ypur应用程序中添加引用“ Microsoft.VisualBasic”。

bool b = Microsoft.VisualBasic.Information.IsNumeric(“ null”); bool c = Microsoft.VisualBasic.Information.IsNumeric(“ abc”);

在上面,b和c应该为False。

希望这对您有所帮助。