无法访问 class 外的嵌套 class

unable to access nested class outside class

我知道将一个 class 嵌套在另一个 class 中不是一个好的做法,但以下只是为了好玩。

我有以下代码

namespace PlayIt
{
    class Class1
    {
        class Class2 : Class1
        {
        }
    }

    class SomeOtherClass
    {
        Class1 objClass1 = new Class1();
        Class2 objClass2 = new Class2();
    }
}

我可以创建 class1 的对象,但不能创建 class2 的对象,为什么这样呢? 有什么方法可以访问 class1

之外的 class2

I am able to create the object of class1 but not of class2, Why So?

两个原因:

首先,Class1 是隐式内部的,而 Class2 是隐式私有的(因为它是嵌套的)。

其次,您试图在没有意义的范围内仅使用 Class2 - 您需要对其进行限定。这将正常工作:

namespace PlayIt
{
    class Class1
    {
        internal class Class2 : Class1
        {
        }
    }

    class SomeOtherClass
    {
        Class1 objClass1 = new Class1();
        Class1.Class2 objClass2 = new Class1.Class2();
    }
}

因为嵌套的class是私有的。如果你把它设为 internalpublic.

就可以访问它
class Class1
{
    internal class Class2 : Class1
    {

    }
}

class SomeOtherClass
{
    Class1 c1 = new Class1();
    Class1.Class2 c2 = new Class1.Class2();
}

将您的 "class2" 更改为内部或 public。然后您将能够通过 "SomeOtherClass" 访问 "class2"。但请记住 "Class1" 也不应该是私有的或受保护的(class1 和 SomeOtherClass 不是派生的 类)。

你必须了解OOP中访问修饰符的概念(封装)

请参考以下Link。 What is the difference between Public, Private, Protected, and Nothing?