의문......

2424 단어
만약에 제가 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은 가능합니까?
 
 

좋은 웹페이지 즐겨찾기