如何在类中再次调用“ static void Main(string[] args)

本文关键字:Main void string args static 调用 | 更新日期: 2023-09-27 18:37:11

我是 C# 的新手,现在在控制台应用程序上工作了一天,我写了以下代码:

程序.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Ch06Ex01
{
    class Program
    {
        static void Write()
        {
            Console.WriteLine("Please enter any string..!!");
        }
         static void Main(string[] args)
        {       
            Write();
            string name = Console.ReadLine();
            Write();
            string name1 = Console.ReadLine();
            Write();
            string name2 = Console.ReadLine();
            Write();
            string name3 = Console.ReadLine();
             Console.WriteLine("{0}, {1}, {2}, {3}",name,name1,name2,name3);
             Console.WriteLine("enter '"y'" to restart the program and '"n'" to exit the Program");
             string selectedOption = Console.ReadLine();
             if (selectedOption == "y")
             {
                 // howto call  static void Main(string[] args) here agin so that the program start itself from the start point
             }    
             //else if (selectedOption == "n")
            {
               //Terminate the Program
             }
             Console.ReadKey();
         }      
    }

}

现在在这一点上:

 if (selectedOption == "y")
             {
                 // howto call  static void Main(string[] args) here agin so that the program start itself from the start point
             }    
如果用户输入"y",我想

重新启动程序,如果用户输入"n",我想终止它,为此,我尝试使用 goto 语句,例如:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Ch06Ex01
{
    class Program
    {
        static void Write()
        {
            Console.WriteLine("Please enter any string..!!");
        }
         static void Main(string[] args)
        {
            StartPoint;
            Write();
            string name = Console.ReadLine();
            Write();
            string name1 = Console.ReadLine();
            Write();
            string name2 = Console.ReadLine();
            Write();
            string name3 = Console.ReadLine();
             Console.WriteLine("{0}, {1}, {2}, {3}",name,name1,name2,name3);
             Console.WriteLine("enter '"y'" to restart the program and '"n'" to exit the Program");
             string selectedOption = Console.ReadLine();
             if (selectedOption == "y")
             {
                 // howto call  static void Main(string[] args) here agin so that the program start itself from the start point
                 goto StartPoint;
             }    
             //else if (selectedOption == "n")
             Console.ReadKey();
         }      
    }
}

但它对我不起作用StartPoint;它给出了错误

Only assignment, call, increment, decrement, await, and new object expressions can be used as a statement   C:'Users'Ahsan'Desktop'C# for Beginners Examples'Ch06Ex01'Ch06Ex01'Program.cs   18  13  Ch06Ex01

然后我尝试在点调用 main 函数本身

 if (selectedOption == "y")
         {
             // howto call  static void Main(string[] args) here agin so that the program start itself from the start point
         }    

但是这里给了我很多错误,现在不知道该怎么做,有人可以帮助我吗? 不知道怎么做这件事......在类中再次调用" static void Main(string[] args)"将是首选。

如何在类中再次调用“ static void Main(string[] args)

首先,您的标签不正确。标签的末尾应具有冒号字符:..所以你的标签应该是这样的:

StartPoint:

但是

您应该只是循环,直到满足条件。在这种情况下..条件是不重新启动:

bool running = true;
while (running) {
    /* 
     * all of your other code
     * should go here
     */
    if (selectedOption != "y") {
        running = false;
    }
}

你真的不应该使用 goto 或再次调用你的 Main (递归),do while 是重复逻辑多次次数的更好解决方案:

    string selectedOption;
    do {
        Write();
        string name = Console.ReadLine();
        Write();
        string name1 = Console.ReadLine();
        Write();
        string name2 = Console.ReadLine();
        Write();
        string name3 = Console.ReadLine();
         Console.WriteLine("{0}, {1}, {2}, {3}",name,name1,name2,name3);
         Console.WriteLine("enter '"y'" to restart the program and '"n'" to exit the Program");
         selectedOption = Console.ReadLine();
      } while (selectedOption == "y")
      Console.ReadKey();

只需再次调用该方法,传入与最初传入的参数相同的参数,如果可以的话,还要尽量避免使用 goto:

if (selectedOption == "y")
{
    // howto call  static void Main(string[] args) here agin so that the program start itself from the start point
    Main(args);
}    

尝试将您将在主类外部执行的代码放在另一个方法中,例如

void execute()
{
        Write();
        string name = Console.ReadLine();
        Write();
        string name1 = Console.ReadLine();
        Write();
        string name2 = Console.ReadLine();
        Write();
        string name3 = Console.ReadLine();
         Console.WriteLine("{0}, {1}, {2}, {3}",name,name1,name2,name3);
         Console.WriteLine("enter '"y'" to restart the program and '"n'" to exit the Program");
         string selectedOption = Console.ReadLine();
}

然后在主要

static void Main(string[] args)
{
    bool run = true
    while(run){
       execute()
       Console.WriteLine("enter '"y'" to restart the program and '"n'" to exit the Program");
        selectedOption = Console.ReadLine();
        if (selectedOption == "n")
        {
             run = false;
        }    
    }
}

像这样

static void Main(string[] args)
            {      
                string selectedOption = "";
                 do 
                 {
                               ...........
                 }
                 while (selectedOption == "y")
                 if (selectedOption == "n")
                 {
                   //Terminate the Program
                  }
             }