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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 迷你卡卡 中级黑马   /  2013-9-29 19:38  /  3264 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 迷你卡卡 于 2013-9-29 20:27 编辑

想问一下,各位大神,关于空字符串的问题
比如,string str=null   和  string  str=""   这两种写法有什么区别吗?

评分

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

查看全部评分

5 个回复

倒序浏览
使用上没区别。
回复 使用道具 举报
string str=null   和  string  str=""     虽然都声明了string类型的str 这个变量,但是前者没有在内存中开辟空间, 后者在内存中开辟了空间,但是里面什么都没存

评分

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

查看全部评分

回复 使用道具 举报
string str = null 不分配内存, string str ="" 分配字节为0的内存。

评分

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

查看全部评分

回复 使用道具 举报
在内存的分配上有那么一点点区别,string s=“”会在栈上保存一个地址,这个地址占4字节,指向内存堆中的某个长度为0的空间,这个空间保存的是str1的实际值。
而string s1=null同样会在栈上保存一个地址,这个地址也占4字节,但是这个地址是没有明确指向的,它哪也不指,其内容为0x00000000。
说白了就是s=“”时会在内存堆中占用一个长度为0的空间,而s=null时不会。
当然对于初学者来说没有什么区别,而且使用上也都差不多的。
一家之言,仅供参考{:soso_e100:}

评分

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

查看全部评分

回复 使用道具 举报

RE: 关于C#中空字符串的问题

于振发 发表于 2013-9-29 19:54
string str=null   和  string  str=""     虽然都声明了string类型的str 这个变量,但是前者没有在内存中开 ...

恩恩  明白了 多谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马