C#中的嵌套類型可以訪問父項的私有屬性。有這種語言功能的特定原因嗎?在我看來,這打破封裝。如果我使嵌套類型公開,那麼我將能夠通過它公開父類的私有屬性。通過C#中的嵌套類型訪問父項的私有屬性#
5
A
回答
6
你會能夠 - 但你只能嵌套類,如果你在同一個源文件中的外部類放在第一位。
有效地,嵌套類由外部類「擁有」,並且信任與外部類的任何其他成員相同的程度。外部類中的方法也可以公開一個私有屬性 - 但你不相信它,因爲你擁有所有的代碼。同樣,你(外部類的作者)擁有嵌套類的所有代碼。如果你不想破壞嵌套類中的封裝,只需避免編寫破壞封裝的代碼:)
5
嵌套類是封閉類的一部分,就像方法一樣。通過它們暴露私有屬性並不會破壞封裝,而是通過方法暴露私有屬性。
C#用於訪問控制的模型是,您可以在您定義的類中訪問任何您想要的內容,並且很難看出它如何以其他方式工作。
2
(IMO)嵌套類型是封閉類型的一部分,所以它應該可以訪問private
成員 - 就像該類型的任何其他部分一樣。
就像您製作public
類型的任何其他部分一樣,這也可能暴露該類型的私有屬性。
由於只有寫封閉類型的人可以寫嵌套類型,所以沒有真正的風險嗎?
相關問題
- 1. PHP在父項中訪問子項的私有屬性
- 2. 在父模型中訪問嵌套的子屬性?
- 3. c# - 嵌套類?有屬性的屬性?
- 4. 訪問類中的私有屬性
- 5. 嵌套對象訪問父母屬性
- 6. 訪問C++父類的私有成員
- 7. 如何訪問C++中的私有嵌套類?
- 8. 可以訪問父屬性的私人子類型
- 9. C++:私人嵌套類型
- 10. 通過父類中的函數訪問子類屬性
- 11. C++訪問嵌套類的私有成員
- 12. PHP:爲什麼子類的繼承方法訪問父項的私有屬性?
- 13. C++允許派生朋友類訪問私有嵌套類
- 14. C#嵌套私有類
- 15. Objective-C:訪問繼承類中的私有屬性
- 16. 可以通過子類訪問父類的屬性數據嗎?
- 17. C++等效的C#嵌套私有類
- 18. 訪問JavaScript中的嵌套屬性
- 19. 訪問嵌套屬性
- 20. BeanMap訪問嵌套屬性
- 21. 流星:如何訪問嵌套模板中的父屬性?
- 22. 如何訪問嵌套JSP標記文件中的父屬性?
- 23. 訪問嵌套組件中的父屬性
- 24. 通過變量訪問嵌套的Javascript JSON屬性
- 25. 通過父屬性訪問值
- 26. 嵌套類訪問封閉類的私有數據成員
- 27. c#類屬性的泛型訪問
- 28. 訪問子類中的父屬性值
- 29. 嵌套類C++中的可訪問性和可見性
- 30. 訪問父類的類屬性
糟糕的設計有無盡的可能性;沒有什麼會強制你使用它們。 –