当你给一个 string 变量赋值 为 "" 时候是要分配内在空间的,因为"" 本身就是一个值。只不过大家习惯了用它来表示 字符串为空。
而 string.Empty() 是将 string 变量初始化为 null,而null 真正意义上的空值,它不会被分配内存空间。所以才有了,当你赋值为 "" 的时候会提示,因为它确实被赋值了,也确实没有被使用。
在日常开发中,建议赋值 为string.Empty()
可是当我将string赋值为null的时候“string a = null;”,还是会提示“变量未使用”,那“string.Empty()”和“null”又有什么差别呢?
@snowleopard_kevin:
当你只定义一个str而不为其分配内存时用string str=null,但是在接下来你使用它之前必须为它赋值如str=“xxxx”也就是为它初始化,不然程序运行时可能会引发空指针异常
而string str= string.Empty是定义和初始化放在了一起它实际是等价于
string str=null;str="";
具体使用时,如果你确定在使用前会给str赋值就用string str=null,否则用string str= string.Empty
用String.Empty表示空字符串,不要用””。String.Empty的定义为public static readonly string Empty,编译时会转化成””,但是String.Empty是一个常数,””是一个字符串对象,对字符串对象进行运算总是很慢的。
@百灵: 谢谢,明白了!
你把 =string.Empty 全部替换为空格,然后再编译。
你的意思是定义为“string a;”这样吗?
@snowleopard_kevin: 不是,就是把赋值为 string.Empty 的代码修改为未赋值,你一编译,不就又能得到warning,然后就可以把这些warning都解决掉。