2014-02-15 70 views
0

是否聲明嵌套類對對象的某些功能/分層的影響或只是訪問/能見度的問題。C#中嵌套類的影響是什麼?

我有4個班在我的計劃,但我只想讓他們的1公開,本來我宣佈他們如下:

namespace mynamespace{ 

    private class A{ 
     // some members; 
    } 

    private class B{ 
     // some members; 
    } 

    private class C{ 
     // some members; 
    } 

    public class D{ 
     // some members; 
    } 

} 

但是編譯器抱怨,所以除其他事項外,我改變私人內部,但相反我認爲,所有4類可用於外部程序,這是我不想要的。我什麼都試過了我能想象,但沒有運氣,所以我想我應該嘗試嵌套類A,B和C d類中,如下所示:

namespace mynamespace{ 

    public class D{ 
     // some members; 

     private class A{ 
      // some members; 
     } 

     private class B{ 
      // some members; 
     } 

     private class C{ 
      // some members; 
     } 
    } 

} 

...這樣,只有我要發佈的類實際上已經發布,但是因爲我是C#的新手,我不確定這是否正確。我擔心這種變化可能會導致內存消耗,性能等相關的後果。

+4

*所有4類可用於外部程序*。這是不可能的。 「內部」成員只在同一個程序集中可見。 – MarcinJuraszek

+0

好吧,如果我將A類聲明爲內部函數,我可以從我的項目中的任何其他文件訪問它。我正在使用MonoDelevelop ...沒有Visual Studio來查看發生了什麼。 –

+1

同一項目=相同大會 – eyalsn

回答

0

如果你正試圖完成的唯一一件事是讓其他項目只能訪問一個,那麼你不需要嵌套類。只需標記所有的那些你不希望其他項目可見的internal(或只使用無改性劑internal是默認值)。

如果你想從同一個項目中的其它類,然後使用嵌套private類會做的伎倆隱藏它們。請注意,嵌套類可以訪問它們嵌套類型的非公共成員。因此,他們獲得一點權力,而在同一時間是不太容易接近到其他類型的

+0

好的,我不太在意嵌套類訪問非公共成員。我擔心的是,這樣的嵌套可能會對我的實例化對象產生一些影響。 –

+0

@georgeb以什麼方式?除了可訪問性嵌套類以外,沒有任何實際影響 – JaredPar

相關問題