不能在其他类中调用main
问题描述:
我做了一个控制台应用程序,并且我试图从Program
类调用类Template
的主类。在Program
类我有这样的菜单开关:不能在其他类中调用main
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();
上的断点但未被触发。我究竟做错了什么?
答
实例化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;
}
答
当您触摸静态类时,只会自动调用静态构造函数。你必须手动调用你的main()。
您只是在交换机中创建Template类的实例。
你的主要方法是静态的,它与实例没有任何关系。
在你的交换机,你不得不这样称呼它
Template.main(param1,param2....);
你说得对,现在工作很好。感谢提示:) –
只是一个问题:如果我想要例如返回到主菜单?那么在模板的Program类的菜单中?我怎么能这样做? –
@SevengamesXoom我不太清楚你的意思,你可以更详细地解释它吗? – Domysee