声明String.Empty 不会占用内存,而b会。

解决方案 »

  1.   

    这个原因和C++中别名以及常量有点类似。因为人定义的东西会随着时间或者环境改变。就好比说现在的字符串都有不同的编码方式。如:unicode,utf8,utf16等等。为了确保移植和兼容,我们一般使用引用,不直接访问数据,这样将来改的时候只要改被引用的数据就好了。就好像你说你“”是空字符串,那如果我给你传了个“\0”,然后告诉你这是空字符串。那你到时候是把代码中所以位置的“”都改成“\0”
      

  2.   

    这个原因和C++中别名以及常量有点类似。因为人定义的东西会随着时间或者环境改变。就好比说现在的字符串都有不同的编码方式。如:unicode,utf8,utf16等等。为了确保移植和兼容,我们一般使用引用,不直接访问数据,这样将来改的时候只要改被引用的数据就好了。就好像你说你“”是空字符串,那如果我给你传了个“\0”,然后告诉你这是空字符串。那你到时候是把代码中所以位置的“”都改成“\0”,还是希望通过改String.Empty的返回值来实现好?
      

  3.   

    写成""和string.Empty都是一样的,不过一个就是微软定义了一个空的规范,其它" ","   "这些都不是string.Empty
    至于占内存,两者都是"",相同的字符串在内存里都是同一个