2011-10-19 9 views
-1

プライベートとして宣言されているenum _levelsがありますが、それでも他のクラスからアクセス可能です。 私が望むのは、プロパティを使用してアクセスすることです。プライベート列挙型が他のクラスでも引き続き表示される理由

以下のコードを考慮してください。

ありがとうございました。

public sealed class TestClass 
{ 
    private static TestClass instance = new TestClass(); 
    private enum _levels { A, B, C, D, E, F, G, H, ASE, SE, SSE, TL, AM };     

    public TestClass(){} 

    public static TestClass Instance 
    { 
    get { return instance; } 
    } 

    public _levels Levels 
    { 
     get { return _levels; }   
    } 
} 
+0

publicプロパティとして返すことで公開しました... – Yahia

+4

'_levels'列挙型が' Levels'プロパティよりアクセスしにくいため、あなたのコードはコンパイルされません。アクセス可能にしたいと言っていますか? – LukeH

+0

これがコンパイルされていても驚くでしょう。一貫性のないアクセシビリティエラーが予想されます。 – CodesInChaos

答えて

4

私は、これはあなたが

public sealed class TestClass 
{ 
    public enum Levels { A, B, C, D, E, F, G, H, ASE, SE, SSE, TL, AM };     

    private Levels _levels; 
    public Levels Levels 
    { 
     get { return _levels; }   
    } 

    private static TestClass instance = new TestClass(); 
    public static TestClass Instance 
    { 
    get { return instance; } 
    } 

    public TestClass(){} 
} 
+0

あなたはそれを持っています。ありがとう...:) – yonan2236

+0

@ yonan2236、enumを宣言すると、その型のインスタンスではなく、型が宣言されていることを覚えておいてください:) –

+0

@ vc74正しいですが、なぜ内部型(外部クラス上記のコードのように)は、クラスで表示または公開する必要があります。彼は同じクラスのインスタンスにアクセスするためのプロパティを作成しています。なぜこのルール?ややこしい。 – Zenwalker

0

enum型の定義は、その型のプロパティよりもアクセスしにくいため、クラス定義は意味を持ちません。

タイプの定義は、少なくともそのタイプの使用法(あなたの場合はプロパティ)と同じくらい目に見える必要があります。

0

enumのですがやろうとしているものだと思います。型は変数として使用できません。

関連する問題