C#中检查空字符串的最具性能的方法

本文关键字:性能 方法 字符串 检查 | 更新日期: 2023-09-27 18:12:25

在考虑代码性能时,在C#中检查空字符串(我不是在问初始化!(的最佳方法是什么?(参见下面的代码(

string a;
// some code here.......

if(a == string.Empty)

if(string.IsNullOrEmpty(a))

if(a == "")

如有任何帮助,我们将不胜感激。:(

C#中检查空字符串的最具性能的方法

不要将字符串与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((。