const数组的初始化

时间:2014-05-08 06:16:36

标签: c#

如何对结构类型的数组进行常量初始化?例如,在C中我会做这样的事情:

struct Item {
    int a;
    char const * b;
};
Item items[] = {
    { 12, "Hello" },
    { 13, "Bye" },
};

我一直在查看各种C#引用,但无法找到等效的语法。有吗?

1 个答案:

答案 0 :(得分:12)

示例代码:

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建议的那样,删除了new[]部分。

棘手的方式(对于new Item困扰你的情况)

宣布新课程:

class Items : List<Item>
{
    public void Add(int a, string b)
    {
        Add(new Item(a, b));
    }
}

然后您可以将其初始化为:

Items items = new Items {
    { 12, "Hello" },
    { 13, "Bye" }
};

您还可以应用.ToArray的{​​{1}}方法来获取List的数组。

Item

技巧基于集合初始值设定项(http://msdn.microsoft.com/en-us/library/bb384062.aspx):

通过使用集合初始值设定项,您不必在源代码中指定对类的添加方法的多次调用;编译器添加了调用。