Menu

返回方法

WB1975

知名会员
已加入
2020年4月3日
留言内容
87
编程经验
Beginner
用这种方法

C#:
public static string GetLimitedString(string prompt, int min, int max)
{
    string userString;
    bool hasAString = false;
    do
    {
        Console.WriteLine(prompt);
        userString = Console.ReadLine();
        if (userString.Length >= min && userString.Length <= max)
        {
            return userString;
            hasAString = true;
        }

    } while (!hasAString);

    return userString;
}

如果即时通讯在循环中返回,为什么该方法需要另一个返回?

最后的收益应该是什么?我真的不明白这一点。
 
由主持人最后编辑:

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,523
地点
悉尼,澳大利亚
编程经验
10+
您的代码实际上没有任何意义。您正在基于 hasAString 成为唯一的时间 真的 在之后 返回 声明,因此它将永远不会被击中。摆脱该条件并使用无限循环:
C#:
public static string GetLimitedString(string prompt, int min, int max)
{
    do
    {
        Console.WriteLine(prompt);

        var userString = Console.ReadLine();

        if (userString.Length >= min && userString.Length <= max)
        {
            return userString;
        }
    } while (true);
}
或实际使用条件并仅在循环后返回:
C#:
public static string GetLimitedString(string prompt, int min, int max)
{
    string userString;
    bool hasAString;

    do
    {
        Console.WriteLine(prompt);

        userString = Console.ReadLine();
        hasAString = userString.Length>= min && userString.Length <= max;
    } while (!hasAString);

    return userString;
}
 

WB1975

知名会员
已加入
2020年4月3日
留言内容
87
编程经验
Beginner
是的,所以return语句也会中断一个循环,有趣的是不知道。
但我仍然对第二个示例中的中断方式感到困惑

这是对的吗?
hasAString = userString.Length>= min && userString.Length <= max;

这是真的吗?我真的不明白这一点。
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,523
地点
悉尼,澳大利亚
编程经验
10+
记住 如果 语句计算类型的表达式 布尔 。您可以在 如果 声明,您可以在其他任何地方使用 布尔 值是预期的。该表达式的计算结果为 真的 或者 错误的 , 所以 hasAString 变量将设置为 真的 或者 错误的 。什么时候 真的 , !hasAString错误的 并且循环将退出。您可能已经从中获得了所有这些 @约翰·H,但我想我会用自己的话来解释,以防万一。
 
最佳 底部