2011-03-02 123 views
2

我有一個二維數組,我試圖寫入一個列表,所以我可以將它與數據網格綁定。下面是 是我的代碼。將項添加到列表<> c#

 string[,] array = new string[8,4]; 
     array[counting2, 0] = txtSend.Text; 
     array[counting2, 1] = One; 
     array[counting2, 2] = Two; 
     array[counting2, 3] = Three; 


     List<Testing> Hello1 = new List<Testing>(); 

     Testing Hello = new Testing(); 
     for (int i = 0; i <= counting2;i++) 
     { 
      Hello.year = array[counting2, 0]; 
      Hello.One = array[counting2, 1]; 
      Hello.Two = array[counting2, 2]; 
      Hello.Three = array[counting2, 3]; 
      Hello1.Add(Hello); 

     } 

     dataGrid1.ItemsSource = Hello1; 

什麼是看到的是,當我的數組包含3行的數據網格顯示3行使用相同的數據,而不是3點指出錯誤的數據。我猜測是我給列表添加了3次Hello。

但是,我是否將Hello更改爲變量,因此每次for循環循環其另一個名稱。

Ne Ideas?

回答

7

移動的

Testing Hello = new Testing(); 

聲明循環

所以,你有內部;

for (int i = 0; i <= counting2;i++) 
    { 
     Testing Hello = new Testing(); 
     Hello.year = array[counting2, 0]; 
     Hello.One = array[counting2, 1]; 
     Hello.Two = array[counting2, 2]; 
     Hello.Three = array[counting2, 3]; 
     Hello1.Add(Hello); 

    } 
+0

羅布嗨,我與你貼完全相同的時候,怎麼來它顯示2分鐘差異。隨意地問... – kobe 2011-03-02 03:59:35

4

問題與您所說的完全相同:您將三個相同的元素添加到列表中。而且每次迭代都會改變它,但它始終是同一個對象。您應該將對象的創建移動到循環中,以便每次創建不同的對象。

for (int i = 0; i <= counting2;i++) 
    { 
     Testing Hello = new Testing(); 
     Hello.year = array[counting2, 0]; 
     Hello.One = array[counting2, 1]; 
     Hello.Two = array[counting2, 2]; 
     Hello.Three = array[counting2, 3]; 
     Hello1.Add(Hello); 

    } 
4

更改您的代碼,如下圖所示。您需要實例化對象的內部,使得它新每次

 for (int i = 0; i <= counting2;i++) 
     { 
      Testing Hello = new Testing(); 
      Hello.year = array[counting2, 0]; 
      Hello.One = array[counting2, 1]; 
      Hello.Two = array[counting2, 2]; 
      Hello.Three = array[counting2, 3]; 
      Hello1.Add(Hello); 

     } 
相關問題