将项目添加到列表<> C#

时间:2011-03-02 03:51:36

标签: c# visual-studio silverlight-4.0

我有一个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 ??

3 个答案:

答案 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);

        }