从另一种方法调用Main

时间:2017-04-29 17:40:27

标签: c# function methods

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

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

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

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

1 个答案:

答案 0 :(得分:5)

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

  1. null作为参数
  2. 使参数可选
  3. 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异常。这可以通过两种方式完成:

    1. 使用if条件
    2. 空传播
    3. 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这样的教程。