为了账号安全,请及时绑定邮箱和手机立即绑定

字符串输出

/ 猿问

字符串输出

ITMISS 2018-08-16 12:09:32

       string str = "abcdefg\0hijklmn";
           Console.WriteLine(str);
           Console.WriteLine(str.Length);

这样一段简单的代码,在控制台输出的是abcdefg hujklmn    
                                                  15


winfrom中直接运行的结果是:abcdefg

winfrom中单步调试的结果是: abcdefg15

求解释。。。


查看完整描述

2 回答

?
慕斯王

个人意见,\0是空符号转义符,直接运行会通过一行输出的方式。
进行空符号转义。 所以后面的数据不显示.

如果中间插入Thread.Sleep(100)或者MessageBox.Show();就会执行下面的输出,也就是说主线程就会分为两步来做!

而单步调试运行本身就是分步运行,所以输出结果和Thread.Sleep();方式一样!不过和sleep 时间长短也有关系,我觉得可能与电脑的内存,CPU有关

   string s1 = "aaaaa";
            string ss = "sd\0sd";
            Console.WriteLine(s1);
            Console.WriteLine(ss);
            Thread.Sleep(100);
            Console.WriteLine("ssss"+ss.Length);
            Console.WriteLine(ss.Length);
            Console.WriteLine(ss.Length);

另外当你全部输出后,你会发现,你转义符输出那行与你后面那行永远没有换行。原理同上,你输出后会自动为你加上换行回车符,但是因为空符号转义..后面全部转义为空!


查看完整回答
反对 回复 2018-08-20
?
料青山看我应如是

我测试了,调试str能接收到全部字符串,但就可视化就只能接到反斜杠前面部分,我想应该是斜杠有特殊含义吧,我也不知道,关注:学习了

查看完整回答
反对 回复 2018-08-20

添加回答

回复

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信