Добавление элемента в список <> c # - PullRequest
2 голосов
/ 02 марта 2011

У меня есть 2D-массив, который я пытаюсь записать в список, чтобы я мог связать его с сеткой данных.ниже приведен мой код.

        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 на переменную, чтобы каждый раз цикл for повторял свое другое имя.

Ne Идеи?

Ответы [ 3 ]

7 голосов
/ 02 марта 2011

Переместить объявление

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

    }
4 голосов
/ 02 марта 2011

измените свой код, как показано ниже, он будет работать. Вам нужно создать экземпляр объекта внутри, чтобы он каждый раз обновлялся

        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 голосов
/ 02 марта 2011

Проблема в точности как вы сказали: вы добавляете один и тот же элемент в список три раза. И вы меняете его с каждой итерацией, но это всегда один и тот же объект. Вам следует переместить создание объекта в цикл, чтобы каждый раз создавать новый объект.

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

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...