我在考试时被问到这个问题
class main
{
static long afield = 123;
static main()
{
Console.WriteLine(afield);
}
main()
{
afield = 1000;
Console.WriteLine(afield);
}
}
static void Main(String[] args)
{
main obj = new main();
}
输出是什么
我检查a)这是错的。
当我运行该程序时,我收到一条错误消息,指出由于其保护级别而无法访问ConsoleApplication1.main.main()。
默认情况下构造函数不应该公开吗?为什么我会收到此错误?
答案 0 :(得分:3)
在任何成员(构造函数,字段,属性,方法,事件等)上省略access modifier(public
,private
,internal
或protected
) 。)默认情况下会将会员保密。
但是,如果您自己没有定义任何构造函数,则该类将隐式获取无参数的公共构造函数。如果不是这样,则必须为您创建的每个类编写一个空的公共构造函数。
答案 1 :(得分:2)
默认构造函数(没有参数的构造函数)默认是公共的,但在您的代码中,您将构建默认构造函数PRIVATE。所以它们在代码的其他部分是不可能的。
class main
{
static long afield = 123;
public static main()
{
Console.WriteLine(afield);
}
public main()
{
afield = 1000;
Console.WriteLine(afield);
}
}
static void Main(String[] args)
{
main obj = new main();
}
公开宣传,一切都会好起来的。
在这种情况下,C很好,因为你的程序会抛出异常。
答案 2 :(得分:1)
没有访问修饰符的构造函数将是默认的私有,因此您获得了不可访问性错误。
答案 3 :(得分:-2)
为了访问你的课程,你必须明确地将其标记为公开,然后只有你能够访问课程,希望它有所帮助