我有一个结构数组,如下所示:
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方面)是什么?是否更容易使用一个类?
答案 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"};
}