无法访问 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
是私有的。如果你把它设为 internal
或 public
.
就可以访问它
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?
我知道将一个 class 嵌套在另一个 class 中不是一个好的做法,但以下只是为了好玩。
我有以下代码
namespace PlayIt
{
class Class1
{
class Class2 : Class1
{
}
}
class SomeOtherClass
{
Class1 objClass1 = new Class1();
Class2 objClass2 = new Class2();
}
}
我可以创建 class1 的对象,但不能创建 class2 的对象,为什么这样呢? 有什么方法可以访问 class1
之外的 class2I 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
是私有的。如果你把它设为 internal
或 public
.
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?