我有这段代码,并生成错误,因为我已经添加到其类的构造函数中.
class NestedClass
{
class A
{
A() {}
}
class B
{
// no constructor
}
public static void run()
{
A a = new A(); // error
B b = new B(); // no error
}
}
Run Code Online (Sandbox Code Playgroud)
错误是:
NestedExample.A is inaccessible due to protection level
Run Code Online (Sandbox Code Playgroud)
请帮我解释一下.
谢谢 :)
你的构造函数是private.类成员的默认访问修饰符是private.
class A
{
A() {}
}
Run Code Online (Sandbox Code Playgroud)
这是正确的实施
class A
{
public A() {}
}
Run Code Online (Sandbox Code Playgroud)
将构造函数定义为public
public A() { }
Run Code Online (Sandbox Code Playgroud)
类的构造函数A是私有的
请注意,如果您不对构造函数使用访问修饰符,则默认情况下它仍然是私有的.
它为B工作的原因是你没有指定任何构造函数和默认构造函数:
除非该类是静态的,否则C#编译器会为没有构造函数的类提供 公共默认构造函数,以便启用类实例化