在 C# 中,我该如何检查字符串变量是否为空或 null?

144

如何检查C#变量是否为空字符串""或null?

我正在寻找最简单的方法来进行这种检查。我有一个可能等于""或null的变量。是否有一个单一的函数可以检查它是否不是""或null?


我认为你没有深入解释这个问题。你说了 to "" or null,然后是 not "" or null,这让我感到困惑。 - Momoro
这里的重复关闭方向应该被颠倒。https://dev59.com/02sz5IYBdhLWcg3w17fQ 这个问题的表述更糟糕,观看次数少得多,没有更好的答案,并且比这个问题还要年轻。 - TylerH
6个回答

294
if (string.IsNullOrEmpty(myString)) {
   //
}

2
当我使用 IsEmpty 时,它会显示:'string' does not contain a definition for IsEmpty,我可以在 msdn 中使用 IsEmpty 吗?还是应该使用 IsNullOrEmpty - Shaiju T
3
非常简单和有用。我希望PHP能够拥有类似这样的东西。 - Andrew Liu
6
@Lion Liu:实际上我认为PHP有同样多的优点。参见:http://php.net/manual/en/function.empty.php - Milan
5
我喜欢IsNullOrWhiteSpace(null,empty或whitespace...)。 - Tony Trembath-Drake
3
为了非常明确,您必须使用string/String的类函数,而不是尝试通过对象使用函数!例如,string foo;将不允许您执行foo.IsNullOrEmpty();;您需要像这样使用它:string.IsNullOrEmpty(foo); 对于那些具有内置空/零长度检查的字符串对象的其他语言来说,这有点令人恼火。 - kayleeFrye_onDeck
显示剩余2条评论

64

从 .NET 2.0 开始,您可以使用:

// Indicates whether the specified string is null or an Empty string.
string.IsNullOrEmpty(string value);

此外,自从.NET 4.0以来,有一个新的方法可以更进一步:

// Indicates whether a specified string is null, empty, or consists only of white-space characters.
string.IsNullOrWhiteSpace(string value);

13

如果变量是一个字符串

bool result = string.IsNullOrEmpty(variableToTest);

如果您只有一个可能包含字符串的对象,则

bool result = string.IsNullOrEmpty(variableToTest as string);

1
我曾经遇到过同样的问题,第二个方法并不能正确地解决。请尝试这个方法: object x=3; bool result = string.IsNullOrEmpty(x as string); 由于'x as string'将会是null,所以结果为true,尽管x具有非null或空字符串的值。我没有找到一个简短的解决方案,只好使用了双重检查。 - molnarm
1
@MártonMolnár,它必须包含一个字符串3不是一个字符串,所以这是预期的,请尝试使用“3”代替。 - jk.

3
if (string.IsNullOrEmpty(myString)) 
{
  . . .
  . . .
}

2

string.IsNullOrEmpty是您想要的。


1
廉价技巧:
Convert.ToString((object)stringVar) == ""

这是因为Convert.ToString(object)object为空时返回一个空字符串。而Convert.ToString(string)string为空时返回null。(或者如果你使用.NET 2.0,也可以使用String.IsNullOrEmpty。)

4
从技术上讲是正确的,但我可以明确地说我从未见过使用这种方法。 - Adam Houldsworth
我们是否可以假设将stringVar转换为强制类型对象的过程会对null和空字符串都返回空字符串,但是如果不进行强制类型转换而直接转换同一个stringVar,则会返回null和空字符串?我只是想找出所有的变化情况...... - Stokely

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接