如何对结构类型的数组进行常量初始化?例如,在CI中会执行以下操作:
struct Item {
int a;
char const * b;
};
Item items[] = {
{ 12, "Hello" },
{ 13, "Bye" },
};
Run Code Online (Sandbox Code Playgroud)
我一直在寻找各种C#引用,但找不到相同的语法.有吗?
Ulu*_*rov 13
示例代码:
struct Item
{
public int a;
public string b;
};
Item[] items = {
new Item { a = 12, b = "Hello" },
new Item { a = 13, b = "Bye" }
};
Run Code Online (Sandbox Code Playgroud)
引入参数化构造函数的附加选项:
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" )
};
Run Code Online (Sandbox Code Playgroud)
正如@YoYo建议的那样,删除new[]部分.
棘手的方式(对于new Item困扰你的情况)
声明新课程:
class Items : List<Item>
{
public void Add(int a, string b)
{
Add(new Item(a, b));
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以将它初始化为:
Items items = new Items {
{ 12, "Hello" },
{ 13, "Bye" }
};
Run Code Online (Sandbox Code Playgroud)
您还可以应用.ToArray方法List来获取Items 数组.
Item[] items = new Items {
{ 12, "Hello" },
{ 13, "Bye" }
}.ToArray();
Run Code Online (Sandbox Code Playgroud)
诀窍是基于集合初始化器(http://msdn.microsoft.com/en-us/library/bb384062.aspx):
通过使用集合初始值设定项,您不必在源代码中指定对类的Add方法的多个调用; 编译器添加调用.