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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 追梦无悔 于 2013-10-15 10:22 编辑

string str = "" 和 string str = null 还有 string str = string.Empty;有什么区别吗?主要是在堆内存中是如何变化的呢?

评分

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

查看全部评分

4 个回复

倒序浏览
string str=""和string str = string.empty;没有区别,其实都是共享同一个指向长度为0的空间。
string str=null;并没有指向堆中空间,哪也没指。

评分

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

查看全部评分

回复 使用道具 举报
string str =string.Empty不分配存储空间

string str = null 没有创建内存空间,str中存放的是空引用指针;

string str = ""  创建了内存空间,str中存放的是指向堆中的指针。
当变量为int 型的时候,默认是"",而字符串类型的,默认的是null
在 C# 中,大多数情况下 "" 和 string.Empty 可以互换使用

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 夏闯富 于 2013-10-15 08:40 编辑

string str=null 把这个引用指向了一个null,没有地址没有值的地方。
注:null  关键字是表示不引用任何对象的 null 引用的文字值。  null  是引用类型变量的默认值。 普通值类型不能为 null。 但是,C# 2.0 引入了可以为 null 值的类型。
string str="" 把这个引用指向了一个地址,地址里面存的是空的字符。
注:这个应该好理解,表示一个长度为0的字符串
string str=String.Empty 表示空字符串或者说零长度字符串,  与string str=""的 等号(=) 右边都表示一个意思,只是写法不同
String.Empty 内部是这样定义的:public static readonly string Empty="";string str=String.Empty 只是是把Empty 等号右边的""赋值给str
所以说string str=String.Empty 和string str=""是一个意思

评分

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

查看全部评分

回复 使用道具 举报
string str = ""就相当于 string str = string.Empty,他们是一样的,多用于初始化字符串。如果定义一个字串没有初始化,系统无法识别会报错。 string str = null ;null指的是什么都没有。
string str= "";会分配一个长度为空的存储空间 , string str = string.Empty;不会分配存储空间。  

评分

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

查看全部评分

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