string.Empty 与 "" 有啥区别?在使用中
定义 string 类型的 变量 strName
并附值strName.Trim().Equals(string.Empty)strName.Trim().Equals("")有啥区别当strName 为空字符串时 Equals 与 == 有差异吗?

解决方案 »

  1.   

    string.Empty 不分配存储空间
      "" 分配一个长度为空的存储空间 
      

  2.   

    Equals用于数据对象之间的比较,而“==” 用于值的比较。
      

  3.   

    理论上讲:
    string.Empty是一个Static的属性,使用时不分配存储空间,而在用""时,系统会分配一个长度为空的存储空间。不过编译系统应该会优化,也就是说,比如你程序中有10个地方用到了"",但好的编译系统应该引用的是同一个对象。所以用""也就是浪费一个对象空间而已。
      

  4.   

    string.Empty的好处是可以跨平台
      

  5.   

    string.Empty不分配存储空间
          ""分配一个长度为空的存储空间   
          所以一般用string.Empty为了以后跨平台,还是用string.empty在 C# 中,大多数情况下 "" 和 string.Empty 可以互换使用。比如:string s = "";
    string s2 = string.Empty;if (s == string.Empty) {
      // 
    }
    if语句成立 
    判定为空字符串的几种写法,按照性能从高到低的顺序是:s.Length == 0      优于 s == string.Empty      优于 s == "" 
      

  6.   


    up 开发时优先使用String.Empty代替""
      

  7.   

    string.Empty 不分配存储空间
      "" 分配一个长度为空的存储空间 
      

  8.   

    你用""的时候有可能会因为笔误打成" ";
    但是用string.Empty就不会存在这个问题.
      

  9.   

    string.Empty是一个Static的属性,使用时不分配存储空间,而在用""时,系统会分配一个长度为空的存储空间。不过编译系统应该会优化,也就是说,比如你程序中有10个地方用到了"",但好的编译系统应该引用的是同一个对象。所以用""也就是浪费一个对象空间而已。 
      

  10.   


    并非“长度为空”。考查代码
    string s="";
    为了存储"",需要在堆上分配3个字节,分别是两个0和""它在内存中的位置,即s.m_firstChar、s.m_arrayLength和s.m_stringLength 
    另外,还在堆栈上分配了1个字节,存放变量s本身那篇文章说Length比较最节省时间也是不对的,可以用Reflect出源代码看到,两者在效率上是相同的private static unsafe bool EqualsHelper(string strA, string strB)
    {
        int length = strA.Length;
        if (length != strB.Length)
        {
            return false;
        }
    ...