比如说lst_areaID.selectedValue!="" 和  lst_areaID.selectedValue!=string.Empty
 问!在什么情况下使用后者.

解决方案 »

  1.   

    判断是否是空字符串的时候,我这里说的空和null不是一个概念的,LZ要搞清楚哦,其实你前面写的完全可以这样:if(!string.IsNullOrEmpty(lst_areaID.selectedValue))
      

  2.   

    回2楼 if(!string.IsNullOrEmpty(lst_areaID.selectedValue))和我上面写的有什么区别啊 
      

  3.   

    string.Emptyt 和 "" 是一样的吧?
      

  4.   

    string.IsNullOrEmpty是判断null和"",String.Empty(strValue)和strValue==""是一个概念,之所以要有Empty()方法,就是因为.net的面向对象的思路,该方法是String对象的方法,而strValue==""则是过程式编程的风格。
      

  5.   


    什么时候string.Empty变成方法了……
      

  6.   


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

  7.   


    public static readonly string Empty;
    //这就是String.Empty 那是只读的String类的成员,也是string的变量的默认值,那么他是什么呢?//String的构造函数
    static String()
    {
        Empty = "";//Empty就是他""
        WhitespaceChars = new char[] { 
            '\t', '\n', '\v', '\f', '\r', ' ', '\x0085', '\x00a0', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 
            ' ', ' ', ' ', ' ', '​', '\u2028', '\u2029', ' ', ''
         };
    }
    所以我们判断是时候用 String.IsNullOrEmpty 假如他有null的话,确认不为null的时候我们用 str.Length==0
      

  8.   

    这样看来String.Empty并非是在判断为空的时候使用,而是赋值的时候使用,嗯嗯。
    赋值的时候我们赋值为String.Empty 就不需要另外开辟一个""的内存空间应用了,直接用String.Empty
      

  9.   

    看来楼主还是不死心,就是不肯相信我说的话,以下代码证明string.Empty和""是完全一样的:            Console.WriteLine("".Equals(string.Empty));
                Console.WriteLine(object.ReferenceEquals(string.Empty, ""));
      

  10.   

    string.Empty不占内存,而且从移植性来说string.Empty比""好,因为有些语言的字符串是单引号的
    其他没区别string.Empty=""
      

  11.   

    楼主只是问string.Empty和""的区别而已,我就不明白2,8,10楼的为什么会把string.IsNullOrEmpty给扯进来,
    至于12楼说的“赋值的时候我们赋值为String.Empty 就不需要另外开辟一个""的内存空间应用了”
    这是不对的,如果之前没有出现过空字符串的话,那你在赋值的时候赋string.Empty一样要开辟一个内存空间
      

  12.   

    To ojlovecd:既然是交流的帖子 就没必要非得针对楼主的问题来交流开始大家就提到是用来判断是否为空的, 自然要拿出IsNullOrEmpty说你不是也针对我的错误的地方指明了么 ,这就是交流。
      

  13.   

    string.Empty是string类的静态常量
    ""是会生成一个string对象的
      

  14.   

    string.Empty 不分配存储空间
    "" 分配一个长度为空的存储空间 
    所以一般用string.Empty
    为了以后跨平台,还是用string.empty
      

  15.   

      关于String.Empty和Null的问题是这样的,这两个都是表示空字符串,其中有一个重点是string str1= String.Empty和 string str2=null 的区别,这样定义后,str1是一个空字符串,空字符串是一个特殊的字符串,只不过这个字符串的值为空,在内存中是有准确的指向的,string str2=null,这样定义后,只是定义了一个string 类的引用,str2并没有指向任何地方,在使用前如果不实例化的话,都将报错。   在 C# 中,大多数情况下 "" 和 string.Empty 可以互换使用。
      比如:
      string name1 = "";
      string name2= string.Empty;
      if (name1== string.Empty) {
      // 略
      }
      if语句成立 
      判定为空字符串的几种写法,按照性能从高到低的顺序是:
      name1.Length == 0 优于 name1 == string.Empty 优于 name1 == "" 
      

  16.   


    同意 ojlovecd 所说!有些人就是误人子弟!大部分软件系统,都对字符串进行特殊处理:相同的字符串序列,进行固定存储。也可以说在这些系统中,字符串是“常量”,凡是对字符串的“修改”操作,都产生一个新字符串,旧的字符串不变。这称为字符串的“不可变性”。string.Empty 与 "" 引用同一块内存,故而它们是等价的,只不过 "" 更为简短。