C#中检查空字符串的最具性能的方法
本文关键字:性能 方法 字符串 检查 | 更新日期: 2023-09-27 18:12:25
在考虑代码性能时,在C#中检查空字符串(我不是在问初始化!(的最佳方法是什么?(参见下面的代码(
string a;
// some code here.......
if(a == string.Empty)
或
if(string.IsNullOrEmpty(a))
或
if(a == "")
如有任何帮助,我们将不胜感激。:(
不要将字符串与String.Empty
或""
进行比较以检查是否有空字符串。
相反,使用String.Length == 0
进行比较
CCD_ 4和CCD_。String.Empty
将不创建任何对象,而""
将在存储器中创建一个新对象用于检查。因此字符串空在内存管理中更好。但与string.Length == 0
的比较将更快,也是检查空字符串的更好方法。
我认为最好的方法是if(string.IsNullOrEmpty(a))
,因为它比其他方法更快、更安全。
string.IsNullOrEmpty(a)
它将检查两个空||空
这就是实现:
public static bool IsNullOrEmpty(string value)
{
if (value != null)
{
return (value.Length == 0);
}
return true;
}
延迟到达:
if a == ""
将导致代码分析警告CA1820,所以您绝对不应该这样做。有关完整分析,请参阅CA1820:使用字符串长度测试空字符串
创建一个完整检查的扩展方法:
public static bool IsEmpty(this string s)
{
if(s == null) return true;
return string.IsNullOrEmpty(s.Trim()); // originally only (s)
}
抱歉,代码不好,已修复。现在,这将告诉您,字符串是空的,还是修剪后为空。
您也可以使用长度
string input = "";
if (input != null)
{
if (input.Length == 0)
{
}
}
String.Empty值将仅在运行时被解密,但另一方面"值在编译时本身是已知的。
这是这两者之间唯一的区别。
但在最佳实践中,如果明天M$由于某种原因决定将空字符串值用作"而不是",那么您的代码必须在任何地方都进行更改。因此,在这种情况下,最好使用String.Empty.
这与Path的做法相同。也可以组合。
官方代码分析规则CA1820:使用字符串长度测试空字符串中涵盖并记录了这一点。
使用String.Length属性或String.IsNullOrEmpty方法比较字符串比使用Equals更快。这是因为Equals执行的MSIL指令明显多于IsNullOrEmpty或为检索Length属性值并将其与零进行比较而执行的指令数。
因此,要检查字符串是否为空,请使用.Length
0
检查(string.Length属性(:
"".Length == 0
如果字符串变量可能为null,请使用字符串。IsNullOrEmpty((。
若要将空白解释为"空"并接受空白,请使用字符串。IsNullOrWhiteSpace((。