【发布时间】:2013-11-08 11:10:18
【问题描述】:
我是 C# 的新手,现在正在开发控制台应用程序,我写了以下代码:
Program.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) ”将是首选....
【问题讨论】:
-
你可以使用
while(Console.ReadKey()!='<some exit char>') {code here} -
Static void Main(string[] args) 是 C# 控制台应用程序或 Windows 应用程序的入口点。启动应用程序时,Main 方法是调用的第一个方法。为什么又要召回?
-
当人们回答你的问题时(如何调用你自己的程序根),我会小心这样做。在线程遍历
Main的完整代码块之前,您的应用程序不会结束。在这种情况下,对Main的第一次调用将在内部main完成之前解析。如果你像这样不断地递归,你可能会冒堆栈溢出的风险。但是,Main具有void返回可能会导致发生一些尾调用优化。while循环是解决此问题的惯用 C# 方法。
标签: c# .net console console-application