嵌套类的构造函数由于保护级别的原因使得"不可访问
本文关键字:quot 访问 构造函数 于保护 保护 嵌套 | 更新日期: 2023-09-27 17:49:40
我有了这段代码,并且产生了错误,只是因为我为它的类添加了一个构造函数。
class NestedClass
{
class A
{
A() {}
}
class B
{
// no constructor
}
public static void run()
{
A a = new A(); // error
B b = new B(); // no error
}
}
错误是:
NestedExample.A is inaccessible due to protection level
请帮我解释一下。
谢谢:)
您的构造函数是private
。类成员的默认访问修饰符是private
。
class A
{
A() {}
}
这是正确的实现
class A
{
public A() {}
}
将构造函数定义为public
public A() { }
A
类的构造函数是private
私有构造函数(c#编程指南)- MSDN
注意,如果构造函数没有使用访问修饰符
它对B有效的原因是你没有指定任何构造函数,对于默认构造函数:
构造函数- MSDN
除非类是静态的,否则没有构造函数的类将被赋值为c#编译器将公共默认构造函数设置为启用类实例化
定义构造函数为public
public class A
{
public A() {}
}
A的构造函数是私有的。它不能从A外部访问。同时,B根本没有构造函数,因此得到一个默认的公共构造函数。
您需要指定,默认的是私有的,而在B的情况下,编译器为您提供了一个公共的无参数构造函数。,所以你必须为class A
指定它
class A
{
public A() { }
}
将您的嵌套类设置为public
,问题将得到解决。你的run方法是公共的,但是你想使用的类不是公共的,这会产生问题。