在C#中检查空string的最佳方法

在考虑代码性能时,在C#中检查空string的最佳方式是什么(我不问初始化! )(请参阅下面的代码)

string a; // some code here....... if(a == string.Empty) 

要么

 if(string.IsNullOrEmpty(a)) 

要么

 if(a == "") 

任何帮助,将不胜感激。 🙂

不要将string与String.Empty""以检查空string。

相反,使用String.Length == 0进行比较

string.Empty""之间的区别非常小。 String.Empty不会创build任何对象,而""将在内存中创build一个新的对象进行检查。 因此,string.empty在内存pipe理上更好。 但与string.Length == 0比较会更快,更好的方法来检查空string。

我认为最好的办法是if(string.IsNullOrEmpty(a))因为它比其他方法更快更安全。

 string.IsNullOrEmpty(a) 

它将检查两个NULL || EMPTY

这是实施:

 public static bool IsNullOrEmpty(string value) { if (value != null) { return (value.Length == 0); } return true; } 

你也可以使用Length

 string input = ""; if (input != null) { if (input.Length == 0) { } } 

创build完整检查的扩展方法:

 public static bool IsEmpty(this string s) { if(s == null) return true; return string.IsNullOrEmpty(s.Trim()); // originally only (s) } 

对不起,不好的代码,修复。 现在这会告诉你,如果string是空的或者在修剪之后是空的。

String.Empty的值只会在运行时被破译,而另一边的值在编译时本身是已知的。

这是这两者之间的唯一区别。

但是最好的做法是,如果明天M $决定空string值应该被用作“”而不是“”由于某种原因,那么你的代码必须在每个地方被改变。 所以在这种情况下最好使用String.Empty。

它也与Path.Combine一样使用。

迟到:

 if a == "" 

会产生代码分析警告CA1820,所以你绝对不应该这样做。 有关完整分析,请参阅CA1820:使用string长度testing空string