2011-10-19 18 views
-1

我有一個枚舉_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

你通過將它作爲公共屬性返回來公開它...... – 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,請記住,當你聲明一個枚舉,你聲明一個類型,而不是該類型的實例:) –

+0

@ vc74正確,但爲什麼我的內部類型(嵌套在一個外部類根據上面的代碼)必須是可見的或爲該課程公開。他可以通過任何方式創建一個屬性,以便在同一個類中訪問它的實例。爲什麼這個規則?它令人困惑。 – Zenwalker

0

您的類定義沒有任何意義,因爲enum類型的定義比具有該類型的屬性更難以訪問。

類型定義必須至少與該類型的用法(在您的情況下屬性)可見。

0

枚舉是一種類型。你不能使用type作爲變量。

相關問題