A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

在C#中,string str = null与string str = “”的区别

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

4 个回复

正序浏览
区别:1.null代表声明了一个空对象,对空对象只能做=或==操作,做其它操作就会出错。而“”则代表声明了一个对象实例,而这个对象实例的值是一个长度为0的空字符串。
         2.string str=null相当于定义一个句柄,也就是说有了这个引用,但这个引用并没有指向任何的内存空间。而string str=“”这个应用已经指向了一块内存空间,只不过他是空的,就是因为有了这个内存空间,所以他是一个实际的东西,所以你就可以对他进行操作了。
       3.null 可以赋值给任何对象,而“”就有一定的限制了。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
关于string = "" 和string = null的区别楼上的已经讲解了,我在补充点,,

string str1 = "";
string str2 = string.Empty;
string str3 = null;
我测试过,str2就相当于str1他们的引用地址也就是在内存中的地址是一样的,但是一般情况下用string.Empty这个字段来初始化字符串,应为这是在内存中有个特殊的处理string的机制,要比str1 = ""这样优化的好点。str3 =null就不用说了,空引用,不占用空间

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
string   str= " ",已经程序代码中,已被执行后,就是被实例化,并且在内存中占用一块系统内存。
string   str=null,表示空应用!

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
string   str= " ",表示一个空字符串,被实列化了,占用了内存空间的,
string   str=null,表示一个空引用,没有占用空间而已。
一般string大多用作常量,不改变值。

评分

参与人数 1技术分 +2 收起 理由
郑文 + 2

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马