C# 无法访问类外部的嵌套类

C# 无法访问类外部的嵌套类,c#,class,nested-class,C#,Class,Nested Class,我知道将一个类嵌套在另一个类中不是一个好的实践,但下面的内容只是为了好玩 我有以下代码 namespace PlayIt { class Class1 { class Class2 : Class1 { } } class SomeOtherClass { Class1 objClass1 = new Class1(); Class2 objClass2 = new Clas

我知道将一个类嵌套在另一个类中不是一个好的实践,但下面的内容只是为了好玩

我有以下代码

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

    class SomeOtherClass
    {
        Class1 objClass1 = new Class1();
        Class2 objClass2 = new Class2();
    }
}
我可以创建class1的对象,但不能创建class2的对象,为什么? 有没有办法进入1班以外的2班

我可以创建class1的对象,但不能创建class2的对象,为什么

原因有二:

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

其次,您试图在一个没有意义的范围内使用
Class2
——您需要对其进行限定。这很好:

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

    class SomeOtherClass
    {
        Class1 objClass1 = new Class1();
        Class1.Class2 objClass2 = new Class1.Class2();
    }
}
我可以创建class1的对象,但不能创建class2的对象,为什么

原因有二:

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

其次,您试图在一个没有意义的范围内使用
Class2
——您需要对其进行限定。这很好:

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

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

因为嵌套的
是私有的。如果将其设置为
内部
公共
,则可以访问它

class Class1
{
    internal class Class2 : Class1
    {

    }
}

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

因为嵌套的
是私有的。如果将其设置为
内部
公共
,则可以访问它

class Class1
{
    internal class Class2 : Class1
    {

    }
}

class SomeOtherClass
{
    Class1 c1 = new Class1();
    Class1.Class2 c2 = new Class1.Class2();
}
将中的“class2”更改为内部或公共。然后您将能够通过“SomeOtherClass”访问“class2”。但是请记住,“Class1”也不应该是私有的或受保护的(Class1和其他类不是派生类)

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

请参考以下链接。 将中的“class2”更改为“内部”或“公共”。然后您将能够通过“SomeOtherClass”访问“class2”。但是请记住,“Class1”也不应该是私有的或受保护的(Class1和其他类不是派生类)

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

请参考以下链接。

oh不知道,通过将类嵌套在其他类中,它将成为私有的,我认为类将始终是内部的或公共的,无论它们声明在哪里。。。。Thanksoh不知道通过将类嵌套在其他类中会使其私有,我认为类将始终是内部的或公共的,无论它们声明在哪里。。。。谢谢