bay*_*der 9 c# inheritance nested-class
我们可以在C#中使用嵌套类.这些嵌套类也可以继承OuterClass.例如:
public class OuterClass
{
// code here
public class NestedClass : OuterClass
{
// code here
}
}
Run Code Online (Sandbox Code Playgroud)
完全可以接受.
我们也可以在不将NestedClass作为OuterClass的嵌套类的情况下实现这一点,如下所示:
public class OuterClass
{
// code here
}
public class NestedClass : OuterClass
{
// code here
}
Run Code Online (Sandbox Code Playgroud)
我想知道,上面两个场景之间有什么区别?在方案I中可以实现什么,在方案II中无法实现?通过使NestedClass"嵌套"到OuterClasss,我们能得到更多的东西吗?
yas*_*891 15
您提供的第二个示例不是嵌套类,而是派生自的普通类OuterClass
.
private
可见性,但可以使用更广泛的可见性进行声明private
和从基类继承的那些)还可以在这里看一下这个问题,了解何时以及为何使用嵌套类.
MSDN链接:嵌套类型(C#编程指南)
编辑
要解决@Henk关于两种关系性质差异的评论(继承与嵌套类型):在这两种情况下,你都有两种类之间的关系,但它们具有不同的性质.从派生类派生时,派生类继承基类的所有(除private
)方法,属性和字段.嵌套类不适用.嵌套类不继承任何东西,但可以访问包含类中的所有内容 - 甚至是private
字段,属性和方法.