黑马程序员技术交流社区

标题: string str = "" 和 string str = null 还有 string str = string.Empty [打印本页]

作者: 追梦无悔    时间: 2013-10-14 23:50
标题: string str = "" 和 string str = null 还有 string str = string.Empty
本帖最后由 追梦无悔 于 2013-10-15 10:22 编辑

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

作者: Liu阳    时间: 2013-10-15 00:03
string str=""和string str = string.empty;没有区别,其实都是共享同一个指向长度为0的空间。
string str=null;并没有指向堆中空间,哪也没指。
作者: 流离    时间: 2013-10-15 01:14
string str =string.Empty不分配存储空间

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

string str = ""  创建了内存空间,str中存放的是指向堆中的指针。
当变量为int 型的时候,默认是"",而字符串类型的,默认的是null
在 C# 中,大多数情况下 "" 和 string.Empty 可以互换使用
作者: 夏闯富    时间: 2013-10-15 08:27
本帖最后由 夏闯富 于 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=""是一个意思

作者: 有钱就有希望    时间: 2013-10-15 09:01
string str = ""就相当于 string str = string.Empty,他们是一样的,多用于初始化字符串。如果定义一个字串没有初始化,系统无法识别会报错。 string str = null ;null指的是什么都没有。
string str= "";会分配一个长度为空的存储空间 , string str = string.Empty;不会分配存储空间。  





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