写了个全角数字转半角数字的代码:
string raw_t = "@1 0 7".Substring(1);
string t = string.Concat(raw_t.ToCharArray()
.Select(x => { if (x >= '0' && x <= '9') x ^= '\xFF20'; return x; })
);
在单独的 Console 测试里, 结果是正常的,
t 值为半角 "107".
但是在另外的 WinForm 程序里, Select 内的代码没有执行,
t 的结果是
"System.Linq.Enumerable+WhereSelectArrayIterator`2[System.Char,System.Char]".
而代码改为
string raw_t = "@1 0 7".Substring(1);
string t = string.Concat(raw_t.ToCharArray()
.Select(x => { if (x >= '0' && x <= '9') x ^= '\xFF20'; return x + ""; })
.ToArray()
);
之后, 在 WinForm 程序里结果就正常了.
请问这是怎么回事? 第一个版本的代码是否算一种隐藏的 Bug?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.