Hei*_*nzi 5 .net c# inheritance nested-class
请考虑以下代码示例:
class Outer
{
    public class Nested { }
}
class SubOuter : Outer { }
class Test
{
    Test()
    {
        Outer.Nested x;     // Makes sense.
        SubOuter.Nested y;  // Compiles, but why?
    }
}
似乎嵌套类是由子类"继承"的.那是什么意思?如果我不能(或不能轻易)做到这个功能,我该怎么办?是不是Outer.Nested和SubOuter.Nested完全等同?
澄清:当然它是编译的,因为C#规范是这样说的.我明白那个.我在问为什么 C#是这样设计的,因为它似乎没有为语言增加一些东西.如果您有一个相反的例子,即使用此功能更容易/更短/更好的一些代码,请在答案中分享它,我很乐意接受它.
从它的角度来看,Test Nested它只是一个标识符,就像它是一个成员一样,例如,它public可以访问它,你可以访问任何类Outer或者任何类SubOuter.然而,两种用法都是相同的,它们标识同一类.
你甚至可以引用另一个:
Outer.Nested x = new Outer.Nested(); 
SubOuter.Nested y = x;
甚至
Outer.Nested x = new SubOuter.Nested();
SubOuter.Nested y = x;
但是正如您可能在调试器中看到的那样,x并且y共享引用Outer.Nested而不是SubOuter.Nested.
编辑:正如其他已经提到的,这不是新功能,它只是对类中成员的通常处理.因此,它肯定不会给语言带来任何好处,因为您描述的功能根本不存在.因此,遵循最小惊讶原则.
然而,不同地处理嵌套类将是一个新功能.