Заполнение массива структуры C # сразу несколькими значениями - PullRequest
4 голосов
/ 03 февраля 2011

У меня есть массив struct, который выглядит следующим образом:

    public struct DATA
    {
        public int number;
        public int channel;
        public string filename;
        public string description;
    }
    DATA[] myData = new DATA[12];

Мне нужно заполнить много значений здесь, например myData [0] = {0, 1, "myfile", "TBD"} и т. Д.

Какой самый простой способ (с точки зрения LOC) заполнить эти 12 структур данными? Будет ли проще использовать класс вместо этого?

Ответы [ 3 ]

4 голосов
/ 03 февраля 2011

Метод C для этого не работает.

DATA[] myData = new DATA[]{{1,3,"asdasd","asdasd"}, {...

Вы должны установить каждую структуру данных.

Предлагаю добавить конструктор

public DATA(int number, int channel, string filename, string description)
{
    this.number = number;
    this.channel = channel;
    this.filename = filename;
    this.description = description;
}

и заполните массив, используя ctor

DATA[] myData = new DATA[]{
    new DATA(1,  3,  "abc",  "def"),
    new DATA(2, 33, "abcd", "defg"),
    ...
};

Вы также можете использовать общий список и инициализировать его следующим образом (.NET 3.5 и более поздние версии):

List<DATA> list = new List<DATA>()
{
    new DATA(1,  3,  "abc",  "def"),
    new DATA(2, 33, "abcd", "defg")
};
2 голосов
/ 03 февраля 2011

Вы можете иметь конструктор для структуры:

 public struct DATA
    {
        public int number;
        public int channel;
        public string filename;
        public string description;

        public DATA(int theNumber, int theChannel, ...)
        {
           number = theNumber;
           channel = theChannel;
           ...
        }

    }

Вы также можете найти список более полезным:

List<DATA> list = new List<DATA>();

list.Add(new DATA(1,2,...));

Тогда:

DATA[] data = list.ToArray();
0 голосов
/ 03 февраля 2011

Простой цикл for, вероятно, будет работать лучше:

 for (int i = 0; i < myData.Length; i++)
 {
    myData[i] = new DATA() { number = i, channel = i + 1, filename = "TMP", description = "TBD"};
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...