我创建了一个控制台应用程序,我试图从Template
类调用类Program
的主要部分。在Program
课程中我有一个像这样的菜单开关:
int menu = 0;
while (menu != 7)
{
select = int.Parse(Console.ReadLine());
switch (select)
{
case 1:
new Template();
break;
default:
Console.WriteLine("Bad choice!");
break;
}
}
这是班级Template();
static void main(string[] args)
{
Console.WriteLine("Template");
new Template().menu();
}
public void menu()
{
Console.WriteLine("Menu Template opened!");
}
问题是Template
的主要部分没有被调用,我也尝试在行new Template().menu();
上设置一个断点,但是没有被触发。我做错了什么?
答案 0 :(得分:2)
实例化Template
类不会自动执行main
函数。事实上,只调用一个函数“main”并没有给它任何特殊的语义。
首先,您需要从课堂外访问main
。你这样做是为了公开。
public static void main(string[] args)
{
Console.WriteLine("Template");
new Template().menu();
}
然后,在switch
语句中,您可以使用类名调用此静态方法,而不是创建新实例。
switch (select)
{
case 1:
Template.main(null);
break;
default:
Console.WriteLine("Bad choice!");
break;
}
答案 1 :(得分:0)
触摸静态类时,只会自动调用静态构造函数。你必须手动调用main()。
您只是在交换机中创建Template类的实例。
您的主要方法是静态的,它与实例没有任何关系。
在您的交换机中,您必须将其称为
Template.main(param1,param2....);