有没有办法从“其他方法”“手动”调用Main()
?我有以下代码:
static void Main(string[] args) {
# some code
function();
}
static void function() {
#some code
Main() # Start again
}
我有简单的控制台计算器,当我在function()
计算和打印结果时,我想重新开始,例如在Main()
方法中输入两个数字:“
答案 0 :(得分:5)
您还必须添加参数。如果您不在主要功能中使用该参数,则必须具备以下可能性:
null
作为参数null作为参数
这样就可以了:
static void code()
{
Main(null);
}
可选属性
然后您必须修改参数:
static void Main (string[] args = null)
//...
您无法删除主要功能中的参数,因为它会被其他一些内容调用,您不想修改。
如果你在main函数中使用了args参数,null可能不是一个好主意,那么你应该用new string[0]
之类的东西替换它:
static void code()
{
Main(new string[0]);
}
但是,这不作为可选参数有效,因为可选参数必须是编译时常量。
如果您将其与null
一起使用,则可以在不使用之前检查null
的值的情况下使用 NullReference异常。这可以通过两种方式完成:
if condition 如下所示:
static void Main (string[] args = null)
{
Console.Write("Do something with the arguments. The first item is: ");
if(args != null)
{
Console.WriteLine(args.FirstOrDefault());
}
else
{
Console.WriteLine("unknown");
}
code();
}
空传播,如下所示:
static void Main(string[] args = null)
{
Console.WriteLine("Do something with the arguments. The first item is: " + (args?.FirstOrDefault() ?? "unknown"));
code();
}
顺便说一句,您在Main()
电话后忘记了分号。
也许你应该重新考虑你的代码设计,因为你在code
方法中调用main
方法和代码方法中的main方法,这可能导致无限循环,因此在 StackOverflow异常。您可以考虑将code
方法中要执行的代码放在另一种方法中,然后在main
方法内部和code
方法内部调用:
static void Initialize()
{
//Do the stuff you want to have in both main and code
}
static void Main (string[] args)
{
Initialize();
code();
}
static void code()
{
if (condition /*you said there'd be some if statement*/)
Initialize();
}
Here您可以获得有关方法的更多信息。但由于这是在学习如何编写代码时通常会出现的问题,因此您应该阅读像this这样的教程。