2011-05-19 11 views
1

なぜこれがエラーを返しますか?列挙型の配列を明示的に初期化する方法[C#]

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

    public MyEnum[] myEnum; 

    public Class1() 
    { 
     myEnum = 
     { 
      MyEnum.First, 
      MyEnum.First, 
      MyEnum.First 
     }; 
    } 
} 

これはしていませんが:

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

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

    public Class1() 
    { 

    } 
} 

私はそれを私はコンストラクタに初期化を分離することができます最初の方法に対するのしたいと思います。これはどのように正しく行われますか?

+0

利用のReSharperのhttp://www.jetbrains.com/resharper/まだ – bevacqua

答えて

8

は、次の構文を使用します。

public Class1() 
    { 
     myEnum = new MyEnum[] 
     { 
      MyEnum.First, 
      MyEnum.First, 
      MyEnum.First 
     }; 
    } 
+2

以上、 'new MyEnum []'ではなく 'new []'だけです。 –

+0

私はまだ '新しいMyEnum []'がはっきりしていると思います。私はどこでも 'var'を使っていますが。 – GvS

3

フィールドが宣言されたときに、短い表記にのみ使用することができます。

そうでない場合は、長い表記法を使用する必要があります。

myEnum = new MyEnum[] { MyEnum.First }; 

は、ここで配列初期化子について詳しく読む:http://msdn.microsoft.com/en-us/library/aa664573(v=vs.71).aspx

関連する問題