【问题标题】:How do I return something from a method to break a loop in c#?如何从方法返回一些东西以打破 C# 中的循环?
【发布时间】:2019-01-11 21:29:12
【问题描述】:

我正在为自己编写一个小游戏。在这个游戏中,我使用了一种方法,该方法包含一个循环,将数字生成到一个 char 数组中,该数组符合游戏中使用的一组特定标准。这使得数字生成,至少对于我的基本 C# 知识来说相当复杂,我想将它保存在一个单独的方法中。

我遇到的问题是我需要创建一个循环,玩家可以通过按下退出选项来打破自己,但如果玩家想要继续播放它会重新启动循环但 但也从其他方法生成一个新数字。

我应该在另一个方法中调用那个方法吗?如果是这样,我该怎么做?

public static void method2 ()  method1();

我应该在游戏方法之外进行循环,从而生成一个新数字吗?如果是这样,我如何从 void 方法返回一些东西以退出循环(将 x 更改为 false)?

do method2(method 1) while (x = true)

我愿意改变我的方法2,所以如果有人有更好的类型可以使用,它就不是一个无效的方法。

如果有人需要特定代码,我可以提供链接或编辑问题以包含它,但它很长(超过 100 行)!

【问题讨论】:

  • 您需要分享更多代码。我们需要足够的东西来理解正在发生的事情。理想情况下,我们需要一个minimal reproducible example
  • 在您拥有的 100 多行代码和您向我们展示的无效伪 C# 之间的某个位置,存在一个简单的示例,它演示了您正在尝试做的事情以及您正在做的事情试图做。创建该示例。通常,您会发现这样做的过程甚至在您需要询问之前就已经揭示了解决方案。就目前而言,您提出的问题含糊不清,对我来说没有多大意义。你问如何调用方法?如何从方法中返回值?这些内容都包含在该语言的介绍性教程中。

标签: c# loops methods


【解决方案1】:

我认为您所描述的一个相当典型的模式如下所示:

bool keepPlaying = true;
while (keepPlaying)
{
    var number = GenerateNumber();
    // ... more code
    keepPlaying = AskIfUserWantsToPlayAgain();
}

但是,使用其他构造来获得相同的结果是完全可以的:

while (true)
{
    var number = GenerateNumber();
    // ... more code
    var keepPlaying = AskIfUserWantsToPlayAgain();
    if(!keepPlaying)
    {
        break; // or `return`, if this is your entire method.
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    相关资源
    最近更新 更多