C# string类型问题

m0_37605715 2017-07-28 09:54:31

string[] strAyyary =new string[3]{null,null,null };
for(int i=0;i<3;i++)
{
Console.WriteLine(strAyyary[i] );
}
会输出三个空字符串。

而代码
string s=null;
Console.WriteLine(s);
会抛出异常:Value cannot be null.
...全文
754 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
真相重于对错 2017-07-31
  • 打赏
  • 举报
回复
引用 15 楼 mastermanager 的回复:
版本问题,低版本的null是不允许直接 tostring()的。高版本的可以
手头没有.net,没法测试,但是我想不会,一个合格的程序员不会对输入参数不做基本的检测的
mastermanager 2017-07-31
  • 打赏
  • 举报
回复
版本问题,低版本的null是不允许直接 tostring()的。高版本的可以
真相重于对错 2017-07-31
  • 打赏
  • 举报
回复
引用 12 楼 m0_37605715 的回复:
还是没太明白,各位大神,还请继续给我解解惑吧
你自己想一下,如果你要实现一个如果console.writeline的函数该怎么办 我想应该如此 void WriteLine(object o ) { string msg; if(o==null) msg=""; else msg=o.tostring(); //然后再output msg; }
m0_37605715 2017-07-31
  • 打赏
  • 举报
回复
引用 14 楼 倦怠的回复:
[quote=引用 12 楼 m0_37605715 的回复:] 还是没太明白,各位大神,还请继续给我解解惑吧
你自己想一下,如果你要实现一个如果console.writeline的函数该怎么办 我想应该如此 void WriteLine(object o ) { string msg; if(o==null) msg=""; else msg=o.tostring(); //然后再output msg; } [/quote] 请问怎么给分啊,我用的是手机客户端,第一次用
m0_37605715 2017-07-31
  • 打赏
  • 举报
回复
引用 14 楼 倦怠的回复:
[quote=引用 12 楼 m0_37605715 的回复:] 还是没太明白,各位大神,还请继续给我解解惑吧
你自己想一下,如果你要实现一个如果console.writeline的函数该怎么办 我想应该如此 void WriteLine(object o ) { string msg; if(o==null) msg=""; else msg=o.tostring(); //然后再output msg; } [/quote] 你说的这个我能接受
RLib 2017-07-30
  • 打赏
  • 举报
回复
你体会下
string a = null;
string b = a + "";
m0_37605715 2017-07-28
  • 打赏
  • 举报
回复
引用 9 楼 snlixing的回复:
这个null不仅仅表示为无字符,更表示为空的引用。
空引用不就是没有分配堆内存,没有指向任何对象,对象不存在吗?那输出的这个空字符对象从何而来?
snlixing 2017-07-28
  • 打赏
  • 举报
回复
这个null不仅仅表示为无字符,更表示为空的引用。
疲倦的伤新 2017-07-28
  • 打赏
  • 举报
回复
值类型和引用类型?string[] strAyyary 开辟了三个空的引用空间?
m0_37605715 2017-07-28
  • 打赏
  • 举报
回复
各位,之前是我的失误,但是引用变量s不是什么对象都不指吗,为什么还会输出空字符串这个对象呢?
m0_37605715 2017-07-28
  • 打赏
  • 举报
回复
引用 2 楼 正怒月神的回复:
我记得也都是 输出空白
的确是空白,我调试的时候失误了
m0_37605715 2017-07-28
  • 打赏
  • 举报
回复
引用 1 楼 有时想起的回复:
亲测 一样都是输出 空字符串
我的失误,如你所说的确输出空字符串。但是引用变量s不是什么对象都不指吗,为什么还会输出空字符串这个对象呢?
  • 打赏
  • 举报
回复
版本问题吧,低版本会报异常,高版本会隐式转为空字符串 不过不可能发生在同一个版本上
exception92 2017-07-28
  • 打赏
  • 举报
回复
。net framework 4.5 下 输入空字符串,不会报错。
正怒月神 2017-07-28
  • 打赏
  • 举报
回复
我记得也都是 输出空白
有时想起 2017-07-28
  • 打赏
  • 举报
回复
亲测 一样都是输出 空字符串
m0_37605715 2017-07-28
  • 打赏
  • 举报
回复
还是没太明白,各位大神,还请继续给我解解惑吧
真相重于对错 2017-07-28
  • 打赏
  • 举报
回复
引用 10 楼 m0_37605715 的回复:
[quote=引用 9 楼 snlixing的回复:]这个null不仅仅表示为无字符,更表示为空的引用。
空引用不就是没有分配堆内存,没有指向任何对象,对象不存在吗?那输出的这个空字符对象从何而来?[/quote] 其实,不过是 Console.Write(null); 而已 我推测,难道写Console.Write的程序员不知道,输出之前不检测吗? 如果发现是null,不会只输出空吗? reflect反编译一下Console.Write不就知道了?

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧