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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 维纳斯之叶 于 2012-11-17 08:37 编辑

在C#中string.Empty、string s=null和string s=""的区别

评分

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

查看全部评分

5 个回复

倒序浏览
string.Empty不分配存储空间,string s=""分配一个空的存储空间,而string s=null只是定义了个空引用,它跟前两者的区别就是在内存中没指向任何位置。

评分

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

查看全部评分

回复 使用道具 举报
在C#中string.Empty、string s=null和string s=""的区别
string s=null不分配内存,没有定义对象;
string s=""分配了内存,定义了一个指向空字符串的对象(指针)。
字符串是类,属于引用类型。
如果string s=string.Empty,则string.Empty类似于常量,效率高些,而string s=""则多定义了一个指向空字符串的对象(指针)。

评分

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

查看全部评分

回复 使用道具 举报
str=""则是你程序员自己定义的空字符串对象
string.Empty是系统内置的一个空字符串对象
两者区别不大,string.Empty只是让代码好读,防止代码产生歧义,执行效率差不多。

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

评分

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

查看全部评分

回复 使用道具 举报
当你只定义一个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是一个常数,””是一个字符串对象,对字符串对象进行运算总是很慢的。

评分

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

查看全部评分

回复 使用道具 举报
string.Empty表示空字符串,该属性为只读;
string s = null 是不给他分配内存空间;
string s= "" 给它分配长度为空字符串的内存空间。

评分

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

查看全部评分

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