在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