gpt4 book ai didi

c# - 从另一个方法调用 Main

转载 作者:行者123 更新时间:2023-12-01 15:19:00 25 4
gpt4 key购买 nike

有没有办法调用Main()从另一种方法“手动”?我有以下代码:

static void Main(string[] args) {
# some code
function();
}

static void function() {
#some code
Main(); # Start again
}

例如,我有一个简单的控制台计算器,当我在 function() 中计算和打印结果时,我想重新开始,例如“输入两个数字:”在 Main()方法。

最佳答案

您还必须添加参数。如果您不在主要功能中使用该参数,则必须有以下可能性:

  • 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 条件
  • 空传播

  • 一个 如果条件看起来像这样:
    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 之类的教程。 .

    关于c# - 从另一个方法调用 Main,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43698671/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com