发信人: i_am_trueman(蚊为悦己者容)
整理人: i_am_trueman(2004-12-12 23:24:40), 站内信件
|
微软这次让我付出了一个上午的调试时间,我kao!
现象:单步执行调试时,监视一个String类型的变量,发现其变量值在监视窗中显示为“"xxxxxxxxxx”,注意,结尾缺少了半角双引号。
测试:对此变量进行一系列常用的字符串操作,没有发现有不妥之处;控制台打印此变量,与预想结果一致;监视其长度,发现与预想结果不一致。
根源:此变量是通过Encoding.Unicode.GetString(Byte())方法得到的,于是转为追寻此Byte数组的值,发现最后几个元素均为0,对应转换为字符时应是x0000,即Unicode字符集的第一个字符,是一个不属于Unicode空白字符归类的空白字符,不占显示空间!它直接导致了转换而得的String变量在监视窗中未能正常显示。显然,监视窗没有考虑到这种特殊情况下应如何显示字符串,显示为“"xxxxxxxxxx"”不准确,显示为“"xxxxxxxxxx "”也不准确,就只好忽略后面的双引号了。ft!
解决办法:微软的bug自然是无法靠我们自己解决的,唯有日后留个心眼,碰到只有半边双引号的监视值时,就该想想是不是含有空白字符了~
---- 1979年有好多人出世,宜家哩D人好多都响社区度蒲,点解呢? |
|