如何对结构类型的数组进行常量初始化?例如,在C中我会做这样的事情:
struct Item { int a; char const * b; }; Item items[] = { { 12,"Hello" },{ 13,"Bye" },};
我一直在寻找各种C#引用,但找不到相同的语法.有吗?
解决方法
示例代码:
struct Item { public int a; public string b; }; Item[] items = { new Item { a = 12,b = "Hello" },new Item { a = 13,b = "Bye" } };
引入参数化构造函数的附加选项:
struct Item { public int a; public string b; public Item(int a,string b) { this.a = a; this.b = b; } }; Item[] items = { new Item( 12,"Hello" ),new Item( 13,"Bye" ) };
正如@YoYo建议的那样,删除了新的[]部分.
棘手的方式(对于新物品困扰你的情况)
声明新课程:
class Items : List<Item> { public void Add(int a,string b) { Add(new Item(a,b)); } }
然后你可以将它初始化为:
Items items = new Items { { 12,"Bye" } };
您还可以应用List的.ToArray方法来获取Items数组.
Item[] items = new Items { { 12,"Bye" } }.ToArray();
诀窍是基于集合初始化器(http://msdn.microsoft.com/en-us/library/bb384062.aspx):