不能在其他班级打电话给主

时间:2016-03-05 07:38:34

标签: c#

我创建了一个控制台应用程序,我试图从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();上设置一个断点,但是没有被触发。我做错了什么?

2 个答案:

答案 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....);