公布微软.net StringBuilder方法一个极其SB的BUG,恼火之极!!
我要做一个应用程序,对一个篇幅较大的众多字符串进行替换操作
例如,每行100个数字0-9,10000行,可以有相同值的行,绝大多不相同
我起先用 string=string.replace("old","new") 去进行操作,old是旧参数,new是新参数
比如需要修改替换第 31行 50行 1020行.。。。。这些数据,那就需要把这些做成数组对吧
我这么做 string s[,]=new string[n,2];
反正就是循环查找替换 s 保存了旧值和新值
替换的是一塌糊涂,替换的结果 20%-30%被替换,其他仍旧不动,我想了一下,可能是 string 太大,
string 这种替换,每次产生一个新对象,可能吃不消,对象太多。
于是我改用了 stringbuilder.Replace("","")方法
比如有一行 2114124123123129313112 我随便写的数字,我要替换为 00000001010023123129313102
大家注意,前面好多都换了,倒数第2个也换了
SB的微软,竟然替换结果是00000001010023123129313112
开始以为循环速度快,CPU出错,我单步调试好多次,都这个鬼样!!!
他为了提高Replace效率肯定是抽样对比,NND,抽样你找到样本,你全换啊,他不,就像一个粗心的人,看前面不一样,认真换,后面差不多,就全搞上去!!
让我花了1周时间去找问题根源!!
大家可以做个实例模拟出效果,你说气人不?
字符串操作是程序的根本操作,抽样对比,也不能这么整啊,出了问题我都是习惯性找自己原因,害我熬多少夜去琢磨
会IL的朋友,帮忙分析一下IL代码,从汇编角度找到根源
越用.net越觉得,就是糊弄人的产品,.net就是噱头,看java搞的火,自己整一套
越往深处用,越不顺手,问题越多,缺陷越多,还到处搞,和这个合作和那个合作,各大厂商还群起响应,AutoCAD,delphi还都从深层次支持,还有公司用它开发网游,不知道怎么开发出来的下去!!!
我用的 3.5 vs2008,都 从1.0更新到 3.5 这种问题还没更新出来?
难道真的只能拿他当花瓶用,开发开发小网站?