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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王毅 中级黑马   /  2013-3-14 17:28  /  3455 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王毅 于 2013-3-15 20:08 编辑

Console.WriteLine("");
Console.WriteLine(null); // 打印的时候为什么会出错。

评分

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

查看全部评分

8 个回复

倒序浏览
我觉得里边的参数是object类型的,而null不是数据类型,所以系统里边不能识别,所以编译出错了。你可以查下msdn

评分

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

查看全部评分

回复 使用道具 举报
String a="";是a引用指向一个空的字符,不是空引用,已经浪费了空间。
String b = null;   是b没指向任何字符,是空引用,没浪费空间

评分

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

查看全部评分

回复 使用道具 举报
上面一个表示的是空 打出来是个空格
null表示什么都没有 所以会出错
回复 使用道具 举报
string a="";声明了a并且 申请了一个内存空间用来存放"",有空值有地址。
string a=null; 声明了a但是没有申请内存空间来存放,无值无地址。

评分

参与人数 1技术分 +1 收起 理由
彭清贵 + 1

查看全部评分

回复 使用道具 举报
null是没有分配内存空间,“”是分配了内存空间,但里面没有值,它的长度为0;
对null使用.length()会发生编译异常。

评分

参与人数 1技术分 +1 收起 理由
彭清贵 + 1

查看全部评分

回复 使用道具 举报
宋健 中级黑马 2013-3-15 17:58:15
7#
string a="";已经在堆上开辟了空间存储空值;
string a=null;没有在堆上开辟空间,只是在栈上分配了一个string类型地址。

评分

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

查看全部评分

回复 使用道具 举报
string str = null 表示没有赋予str一个与之对应的实际对象(没有内存分配)
string str =“” 表示一个内容为空字符串的字符串对象
前者由于没有指向具体对象,所以在没有将它指向具体对象之前,不能用“.”运算符引用string类对象的很多方法和属性。
但是后者就可以。
string a;
Co.Wri(a);//这里会报错,因为没有初始化a
string a="";
Co.Wri(a); //这里不会报错,因为把a初始化了

评分

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

查看全部评分

回复 使用道具 举报
null 没有创建内存空间,输出的是空引用指针
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马