遇见一个十分诡异的问题,分数不多,但希望大家能进来看看
System.Text.StringBuilder sb = new System.Text.StringBuilder();
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
string doc1 = ds.Tables[0].Rows[i]["Msg"].ToString();
string doc = Encrypt.AESDecrypt(doc1);
sb.Append(doc);
Console.WriteLine(sb.ToString());
}
IE.Document.Body.InnerHtml = sb.ToString();
代码很简单,但执行效果和预想很不同,废话不多说,直接上图这是I=0时doc的值.这是sb.append后sb.tostring的值,结果正确.这是i=1时doc的值,这是i=1时sb.append后的sb.tostring,注意,这里I=1时doc的值完全没有append进去,整个循环跑完后,只有I=0时doc的值被append进去,这是咋回事?
--------------------编程问答-------------------- 我只注意到抹掉的部分是靳刚。 --------------------编程问答-------------------- 好吧,你赢了 --------------------编程问答-------------------- 没看到“这是i=1时doc的值”
你确定
string doc = Encrypt.AESDecrypt(doc1);
得到的doc 是可见字符串?
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/ --------------------编程问答-------------------- 事出蹊跷必有妖。 --------------------编程问答-------------------- 抱歉,写的有些乱.doc的确是可见的,i=1时doc的值在第三张图上,i=0时doc的值在第一张图上,两个值在时间上有所区别 --------------------编程问答-------------------- --------------------编程问答-------------------- 把 Console.WriteLine(sb.ToString());去掉试一试,
印象中ToString调用后就不能修改stringbuilder了。 --------------------编程问答-------------------- 十分诡异,此事必有蹊跷 --------------------编程问答--------------------
去掉了,也是一样... --------------------编程问答--------------------
写了点代码测试下,调用ToString()不会影响
StringBuilder sb = new StringBuilder();
sb.Append("aaaaaa");
string res = sb.ToString();
sb.Append("bbbbbb");
res = sb.ToString(); --------------------编程问答--------------------
+1 看热闹的 楼上的都是高手 --------------------编程问答-------------------- 或者你的 Rows[i]["Msg"].ToString() 有问题,或者你的 Encrypt.AESDecrypt有问题。
下边显示abcde这个结果,一点问题都没有。
--------------------编程问答-------------------- 可能<br>后面还有什么不可见特殊字符,你看看sb.tostring().length和显示的长度是不是一样 --------------------编程问答--------------------
using (DataTable dt = new DataTable ())
{
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Msg", typeof(string));
dt.Rows.Add(1, "a");
dt.Rows.Add(2, "b");
dt.Rows.Add(3, "c");
dt.Rows.Add(4, "d");
dt.Rows.Add(5, "e");
System.Text.StringBuilder sb = new System.Text.StringBuilder();
for (int i = 0; i < dt.Rows.Count; i++)
{
string doc1 = dt.Rows[i]["Msg"].ToString();
//string doc = Encrypt.AESDecrypt(doc1);
sb.Append(doc1);
// Console.WriteLine(sb.ToString());
}
Label1.Text = sb.ToString();
}
doc每次的结果在监视器里看都是正常的,但就是无法append进去. --------------------编程问答-------------------- 这是append之后doc和sb的长度.另外,刚刚发现<br>后面有许多\0这个应该不会影响吧 --------------------编程问答-------------------- 解决了,还真是\0的问题stringbuilder以\0分割...
补充:.NET技术 , C#