我有一个2D数组,我试图写入List,所以我可以绑定它与数据网格。 下面是我的代码。
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个不同的数据。我猜是我将Hello添加到列表中3次。
但我是否将Hello更改为varbele,因此每次for循环都会循环另一个名称。
Ne Ideas ??
答案 0 :(得分: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);
}
答案 1 :(得分: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);
}
答案 2 :(得分: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);
}