首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

疑点.

2012-08-17 
疑问...........如果我有一个DataSet里面有一表三列一行现在我要循环这个DS第一个表里的行并改变第三列的

疑问...........

如果我有一个DataSet

里面有一表三列一行

现在我要循环这个DS第一个表里的行

并改变第三列的值,

循环结束后

再次循环,这次只是输出它们的值

值会改变吗?

?为了证明这个问题,写了这些代码:

?

?

            DataSet ds = new DataSet();            DataTable dt = new DataTable();            dt.Columns.AddRange(new DataColumn[] { new DataColumn("a"), new DataColumn("b"), new DataColumn("c") });            DataRow dr = dt.NewRow();            dr["a"] = 1;            dr["b"] = 2;            dr["c"] = 3;            dt.Rows.Add(dr);            ds.Tables.Add(dt);            foreach (DataRow r in dt.Rows)            {                string a = r["a"].ToString();                string b = r["b"].ToString();                string c = r["c"].ToString();                dr["a"] = 111;            }            foreach (DataRow r in dt.Rows)            {                string a = r["a"].ToString();                string b = r["b"].ToString();                string c = r["c"].ToString();                MessageBox.Show(a + "|" + b + "|" + c);            }

事实证明,它最后会输出"111|2|3"

值是会改变的

想象中当该列该行的值改变后,应该要重新将该行赋值给这个DataTable

并把这个DataTable重新赋值给DataSet

然后再次循环值才会改变

?

------------

?

如果是HashTable 呢,改变其中某个Value,值也会变吗?

于是写了这些

?

            Hashtable ht = new Hashtable();            ht.Add("a", "a");            ht.Add("b","b");            foreach (string str in ht.Keys)            {                if (str == "b")                {                    ht[str] = "bb";                }            }            foreach (string str in ht.Keys)            {                  MessageBox.Show(str +"|" +ht[str].ToString());            }

?

?调试时报错:“集合已修改;可能无法执行枚举操作。”

看来Hashtable在循环时是无法修改其值的(修改、删除都不可以)

?而DataSet是可以的?

?

?

?

热点排行