一次填充具有多个值的C#struct数组

时间:2011-02-03 14:00:17

标签: c# 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”}等。

用数据填充这12个结构的最简单方法(在LOC方面)是什么?是否更容易使用一个类?

3 个答案:

答案 0 :(得分:4)

执行此操作的C方法不起作用。

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

您必须设置每个DATA结构。

我建议添加一个构造函数

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

答案 1 :(得分:2)

您可以拥有结构的构造函数:

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

答案 2 :(得分:0)

一个简单的for循环可能效果最好:

 for (int i = 0; i < myData.Length; i++)
 {
    myData[i] = new DATA() { number = i, channel = i + 1, filename = "TMP", description = "TBD"};
 }