zoukankan      html  css  js  c++  java
  • 疑问...........

    如果我有一个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是可以的?

  • 相关阅读:
    SpinLock 实现
    支持正则或通配符的hashmap
    HTTP报文
    Protostuff序列化
    【转】轻量级分布式 RPC 框架
    Servlet 3特性:异步Servlet
    Web服务器的工作原理
    《恰如其分的软件架构:风险驱动的设计方法》——读书笔记
    Java socket中关闭IO流后,发生什么事?(以关闭输出流为例)
    Java Socket常见异常处理 和 网络编程需要注意的问题
  • 原文地址:https://www.cnblogs.com/xcxcxcxc/p/5541182.html
Copyright © 2011-2022 走看看