黑马程序员技术交流社区

标题: 遇到的新问题~~,希望解释的透彻一点,谢谢。。。 [打印本页]

作者: 维纳斯之叶    时间: 2012-9-19 21:40
标题: 遇到的新问题~~,希望解释的透彻一点,谢谢。。。
本帖最后由 维纳斯之叶 于 2012-11-17 08:37 编辑

在C#中string.Empty、string s=null和string s=""的区别
作者: 康子龙    时间: 2012-9-19 21:47
string.Empty不分配存储空间,string s=""分配一个空的存储空间,而string s=null只是定义了个空引用,它跟前两者的区别就是在内存中没指向任何位置。
作者: 蔡嘉    时间: 2012-9-19 22:33
在C#中string.Empty、string s=null和string s=""的区别
string s=null不分配内存,没有定义对象;
string s=""分配了内存,定义了一个指向空字符串的对象(指针)。
字符串是类,属于引用类型。
如果string s=string.Empty,则string.Empty类似于常量,效率高些,而string s=""则多定义了一个指向空字符串的对象(指针)。


作者: 王荟越    时间: 2012-9-20 08:26
str=""则是你程序员自己定义的空字符串对象
string.Empty是系统内置的一个空字符串对象
两者区别不大,string.Empty只是让代码好读,防止代码产生歧义,执行效率差不多。

str=null 在C#中不指向任何值,但是在接下来你使用它之前必须为它赋值,不然会指针异常,程序不知道str指向什么。

作者: 霍永刚    时间: 2012-9-20 08:56
当你只定义一个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是一个常数,””是一个字符串对象,对字符串对象进行运算总是很慢的。
作者: 侍小波    时间: 2012-9-24 10:59
string.Empty表示空字符串,该属性为只读;
string s = null 是不给他分配内存空间;
string s= "" 给它分配长度为空字符串的内存空间。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2