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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 邓艳秋 中级黑马   /  2012-10-4 12:56  /  2047 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

stirng str1=null;
string str2="";
string str3=string.Empty;
这三者都有什么区别呢?
求高人指点。

评分

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

查看全部评分

5 个回复

倒序浏览
1. string str1 = null是不给他分配内存空间的;
2. string str1 = null没有string对象;
3. string str2 = ""有一个字符串对象;
4. string str3= string.Empty是定义和初始化放在了一起,它实际是等价于string str1=null; str2="";

回复 使用道具 举报
stirng str1=null;
string str2="";
string str3=string.Empty;

1.string str2="";  和  string str3=string.Empty;  大多情况下是一样的 ,string.Empty是系统内置的一个空字符串对象,推荐使用这个,方便阅读,跨平台也方便
例如:
2.string str1=null;和后两者的区别: string str1=null;是只定义了一个str1却没有为它分配内存空间,但接下来你要使用它则必须为它赋值
具体使用时,如果你确定在使用前会给str赋值就用string str=null,否则用string str= string.Empty

评分

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

查看全部评分

回复 使用道具 举报
如果要判断空字符串,性能上:
str.Length == 0 优于 str == string.Empty 优于 str == ""
回复 使用道具 举报
string str1 = null是不给他分配内存空间的,如果确保在使用前赋值,这种声明的方式
比较推荐
string str2 = "";是开辟一个内存,但里面的值是空的,一般用于方便接收其他字符串时这样定义的
string str3= string.Empty是定义和初始化放在了一起


评分

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

查看全部评分

回复 使用道具 举报
stirng str1=null;  不分配空间
string str2="";  分配空间,但是无值..
string str3=string.Empty;  这个应该也是要分配空间的..

评分

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

查看全部评分

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