如何显式初始化枚举数组[C#]

Rya*_*n R 3 c# arrays enums

为什么会返回错误?

public class Class1
{
    public enum MyEnum
    {
        First,
        Second,
        Third
    }

    public MyEnum[] myEnum;

    public Class1()
    {
        myEnum = 
        {
            MyEnum.First,
            MyEnum.First,
            MyEnum.First
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

虽然这不是:

public class Class1
{
    enum MyEnum
    {
        First,
        Second,
        Third
    }

    public MyEnum[] myEnum = 
    {
        MyEnum.First,
        MyEnum.First,
        MyEnum.First
    };

    public Class1()
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

我想第一种方式,所以我可以将初始化分离到构造函数.这怎么做得好?

GvS*_*GvS 10

使用以下语法:

    public Class1()
    {
        myEnum = new MyEnum[]
        {
            MyEnum.First,
            MyEnum.First,
            MyEnum.First
        };
    }
Run Code Online (Sandbox Code Playgroud)

  • 或者更好的是,只需要`new []`而不是`new MyEnum []`. (3认同)

lys*_*cid 5

只有在声明字段时才能使用短表示法。

否则,必须使用更长的符号:

myEnum = new MyEnum[] { MyEnum.First };
Run Code Online (Sandbox Code Playgroud)

在此处阅读有关数组初始值设定项的更多信息:http://msdn.microsoft.com/en-us/library/aa664573 (v=vs.71).aspx