string str = "abcdefg\0hijklmn";
Console.WriteLine(str);
Console.WriteLine(str.Length);
这样一段简单的代码,在控制台输出的是abcdefg hujklmn
15
winfrom中直接运行的结果是:abcdefg
winfrom中单步调试的结果是: abcdefg15
求解释。。。
个人意见,\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);
另外当你全部输出后,你会发现,你转义符输出那行与你后面那行永远没有换行。原理同上,你输出后会自动为你加上换行回车符,但是因为空符号转义..后面全部转义为空!
我测试了,调试str能接收到全部字符串,但就可视化就只能接到反斜杠前面部分,我想应该是斜杠有特殊含义吧,我也不知道,关注:学习了
举报