回答
是的,它可能有一个私有类,但只是作为一个内部类另一个类的:
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. 在Google课堂中是否有私人评论的API?
- 4. 是否有可能更改私人CLASS数据记忆illigaly?
- 5. 是否有可能获得私人组装密钥?
- 6. 私人课程目标C
- 7. AWS内部是否有私人资源?
- 8. 私人类的构造函数是否必须是私有的?
- 9. 更改私人课程方法
- 10. 是否有可能使一个类包私人用于测试目的
- 11. 是否有可能找到某人是否查看网页源
- 12. 是否有OO语言允许从课程中减去功能?
- 13. Android:AsyncTask建议:私人课还是公开课?
- 14. 是否有可能在Javascript中当有人点击一个flashobject
- 15. 当你扩展一个私人类。当你扩展一个私人课程时,公共和受保护的课程成员是私人的
- 16. 是否有可能在jQuery中实现人工智能概念?
- 17. 选择所有课程+教师人数
- 18. 是否有可能在Magento
- 19. 是否有可能“关闭”
- 20. 是否有可能在Android
- 21. 是否有可能在Java
- 22. 是否有可能访问
- 23. 是否有可能在IDA
- 24. 是否有可能在iPhone
- 25. 是否有可能读swift
- 26. 是否有可能在HAPIJS
- 27. 是否有可能在Javascript
- 28. 是否有可能在XSLT
- 29. 是否有可能在CMD.EXE
- 30. 是否有可能在Symfony3
[为什么/何时应该在.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