回答
是的,它可能有一個私有類,但只是作爲一個內部類另一個類的:
public class Outer
{
private class Inner
{}
}
當你想封裝一個類的內部的一些邏輯這通常是有用的(外一個),但需要更具結構化/ OO的代碼設計來實現它。過去,當我需要一個容器類來處理某個類的方法中的某些信息時,我曾經使用過這種模式,但是容器類在這個邏輯之外沒有任何意義。使容器類成爲私有內部類意味着它的使用本地化爲利用它的外部類。
值得注意的是,在這個結構中,內部類可以訪問外部類的私有成員,但不能以其他方式訪問。
你可以使用它與NullObject模式(http://en.wikipedia.org/wiki/Null_Object_pattern),然後您的客戶端類將永遠不會知道還有其他類需要擔心。 – 2010-07-13 08:54:32
是的,你可以 - 通常它們是嵌套在另一種類型內的類。這意味着您可以將邏輯聚合到嵌套類中,而不將類暴露給其他任何東西。內部對嵌套類也很有用。
但是請注意,對於需要嵌套類的設計有一些爭論 - 我傾向於在看起來很合適時使用它們。
您可以在另一個班級內部擁有私人班級。
您可以使用私有類來封裝邏輯和實現。例如,你可以在你的ICollection的實現中聲明一個迭代器的實現。
擁有私有的非嵌套類(僅對其名稱空間和子名稱空間僅可見)將允許在編寫同一程序集時清除代碼邊界。
例如,只有一個接口和一個工廠可以從同一個程序集中的其他名稱空間中看到,同時仍然具有接口和實用程序類的所有實現(那些沒有人知道名稱空間的業務)。
它仍然可以用一個大的部分類來替代名字空間和嵌套類,但這是一個非常糟糕的黑客攻擊,單元測試幾乎是不可能的。
用於命名空間註釋。 – 2010-07-13 08:29:44
這個答案與你的前兩行矛盾:http://stackoverflow.com/a/6776502/733152,你能清除混淆嗎? ,謝謝 – 2012-01-14 15:50:41
@Anubis先生請閱讀問題。我回答了第二點,即如果私人類存在,特別是如果它們是名稱空間私有的,那麼私人類的用處是什麼。由於我的第一行中的「會」表示此功能不在當前的C#規範中。 – 2012-01-14 23:50:43
- 1. 是否可以有私人課程?
- 2. 具有所有私人成員的課程是否可以成爲POD課程?
- 3. Javassist - 是否有可能將課程從私人更改爲公開
- 4. 是否有可能擁有私人/內部碼頭倉庫?
- 5. 是否有可能在Beaker筆記本中有私人刊物?
- 6. 在Google課堂中是否有私人評論的API?
- 7. Coffeescript Object作爲私人會員,是否有可能?
- 8. 是否有可能更改私人CLASS數據記憶illigaly?
- 9. 是否有可能獲得私人組裝密鑰?
- 10. 是否有可能得到私人呼叫者的號碼
- 11. 是否有可能獲得鉻擴展作者私人信息
- 12. 是否有可能在Firebird中創建私有存儲過程?
- 13. 是否可以擴展私人功能?
- 14. 私人課程目標C
- 15. 是否有可能使用私人Shopify應用程序的oauth2授權?
- 16. AWS內部是否有私人資源?
- 17. 如何才能知道我在我的應用中使用的課程是否爲私人課程?
- 18. 是否有可能獲得私人會員並使用它的信息/功能?
- 19. 私人類的構造函數是否必須是私有的?
- 20. 是否有可能在c#中暴露一個私有變量?
- 21. 課程,通過公共私人
- 22. 更改私人課程方法
- 23. 私人課程中的公共成員
- 24. 是否有可能使一個類包私人用於測試目的
- 25. 是否有可能對財產和私人變量發表一條評論
- 26. 是否有可能讓人們看到屏幕上的私人遠程桌面連接?
- 27. Rspec:是否有可能在課堂上應用?
- 28. 是否有可能通過名稱獲得課堂鏡像?
- 29. 是否有可能找到某人是否查看網頁源
- 30. 爲什麼只有在私人會員纔有可能?
[爲什麼/何時應該在.net中使用嵌套類?或者你不應該?](http://stackoverflow.com/questions/48872/why-when-should-you-use-nested-classes-in-net-or-shouldnt-you) – nawfal 2013-02-25 10:49:12