【问题标题】:Calling Main( ) from another class从另一个类调用 Main()
【发布时间】:2011-10-07 02:29:14
【问题描述】:

我有一个名为TestMaze 的类。我有另一个名为DisplayHome 的类,它有一个名为gameOver() 的方法:

public void gameOver()
    {
        Console.Write("GAME OVER!");
        Console.Write("Play Again? Y/N");
        if(char.ToLower(Convert.ToChar(Console.Read())=='y')
            //Main()
        else
            Environment.Exit(1);
    }

如何调用 Main 方法?
PS。它们具有相同的命名空间。我只需要知道如何再次调用 Main 方法。

【问题讨论】:

  • 为什么需要调用Main方法?
  • 你为什么投了反对票? >..
  • 你不想再打电话给Main。正如下面的答案所示,您需要重构代码,以便您的 Main 方法调用 StartGame 函数(或等效函数),然后调用 that 函数再次播放。
  • @Reinan:由于对问题的投反对票是免费的,因此人们会对所有幼稚的问题投反对票。并不是说这是一个很好的问题,但我认为不应该对它如此激进
  • @Armen 我知道人们为什么投反对票。但我认为我不应该被否决。嗯,谢谢大家。

标签: c# main


【解决方案1】:

您的 Main... 中应该有一个 Play() 方法,如果用户输入“y”,则 GameOver() 应该调用 Play()。

【讨论】:

  • 这是个好建议。我没有想到。我习惯了;
【解决方案2】:

重构您的代码。将需要调用的内容移到另一个函数中,然后从 main 和 gameOver 中调用它。

【讨论】:

    【解决方案3】:

    假设Main 是一个静态类方法(我想它是),您可以简单地使用MyClass.Main(/*relevant args*/) - 当然要注意它将是一个新的实例化,它不会共享任何非静态可变数据。

    然而,一个可能更好的解决方案是将您的所有代码放入一个单独的类中,该类从Main() 调用/实例化 - 然后您的程序可以将布尔值传递回实际的可执行文件 Main ,它将用于决定是否不要退出或循环。

    【讨论】:

    • 并确保Main 具有适当的保护级别。 protected static int Main 会导致一些额外的工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-14
    • 2017-09-27
    • 2016-10-10
    • 1970-01-01
    • 2013-10-08
    • 2016-01-08
    相关资源
    最近更新 更多