[C#]二維泛型

  • 1947
  • 0
  • C#
  • 2017-09-21

今天想說來試看看二維泛型的應用,本來宣告之後都還沒問題,但是到印出的時候...

private void button1_Click(object sender, EventArgs e)
  {
   List<List<string>> SaveMonth = new List<List<string>>();
   List<string> Month = new List<string>();
   foreach (DataRow dr in dt.Rows)
   {
    int point = 0;
    Month.Clear();
    for (int i = 0; i < dr["ItemRemark"].ToString().Trim(' ').Length; i++)
    {
     if (dr["ItemRemark"].ToString()[i] == '【')
     {
      point = i;
     }
     if (dr["ItemRemark"].ToString()[i] == '】')
     {
      Month.Add(dr["ItemRemark"].ToString().Substring(point + 1, i - point - 1));
     }
    }
    SaveMonth.Add(Month);
   }
  }

結果SaveMonth的內容全都一樣...,瞬間傻掉了,後來設置了中斷點,一次一次看,才發現只要Month有變動,SaveMonth的內容也一起跟著變動,思考過後才想到,我這樣子寫,那每一個放入的陣列都是同一個,難怪會一起改變,如果要將個別的內容存入SaveMonth,就要每個陣列都是新的。

SaveMonth.Add(Month) 改成 SaveMonth.Add(new List<string>(Month))

這樣子就可以正常了。