首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用return退出循环?

使用return退出循环?
EN

Stack Overflow用户
提问于 2009-12-02 07:07:55
回答 3查看 64.5K关注 0票数 22

如果我写一个for、do或while循环,能不能用return关键字解决这个问题呢?

例如:

代码语言:javascript
复制
class BreakTest 
{
public static void Main() 
{
  for (int i = 1; i <= 100; i++) 
  {
     if (i == 5) 
        **return;**
     Console.WriteLine(i);
    }
   }
}

我知道return可以用来退出if语句,所以我对此很好奇,因为我从来没有尝试过(也不能访问我的软件来编写代码来测试它)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-02 07:08:43

return将退出当前方法(在您的示例中为Main)。使用break退出循环。

票数 57
EN

Stack Overflow用户

发布于 2009-12-02 07:35:07

你当然可以做你所要求的事情。关于你是否应该这样做,似乎有两个阵营。有些人说一个函数应该只有一个出口点。他们建议您应该使用一个标志变量来记录您需要退出(以及可能需要返回的任何数据),然后在您跳出循环或到达if/else树的末尾时返回。

就我个人而言,我对一个函数的多个出口点没有问题,只要它们是对称的。我说的“对称”是什么意思?好吧,如果我要从循环内部返回,那么我也想在循环结束时返回(以防我永远不会达到循环中导致我提前返回的条件)。如果我在一个复杂的if/else继承制中,并且我从其中一个案例中返回,那么我应该从所有案例中返回。

下面是一些我喜欢如何编写代码的快速示例:

代码语言:javascript
复制
    public string Search(IEnumerable<string> values)
    {
        foreach(string value in values)
        {
            if(SomeArbitraryCondition())
                return value;
        }

        return null;
    }

    public int PerformAction()
    {
        if (SomeArbitraryCondition())
        {
            if (SomeArbitraryCondition())
            {
                return 1;
            }
            else
            {
                return 2;
            }
        }
        else
        {
            if (SomeArbitraryCondition())
            {
                return 3;
            }
            else
            {
                return 4;
            }
        }
    }

这真的不是一个我想得太多的硬性规则,但这只是我更喜欢写它的方式,因为它对我来说似乎是最干净的。在某些情况下,使用标志变量并只在一个地方返回会更有意义。

代码语言:javascript
复制
    public string Search(IEnumerable<string> values)
    {
        string found = null;
        foreach(string value in values)
        {
            if(SomeArbitraryCondition())
                found = value;
        }

        return found;
    }

    public int PerformAction()
    {
        int state;
        if (SomeArbitraryCondition())
        {
            if (SomeArbitraryCondition())
            {
                state = 1;
            }
            else
            {
                state = 2;
            }
        }
        else
        {
            if (SomeArbitraryCondition())
            {
                state = 3;
            }
            else
            {
                state = 4;
            }
        }

        return state;
    }
票数 6
EN

Stack Overflow用户

发布于 2016-11-27 17:48:42

答得太迟了,但是如果return;的返回类型是空的,它将退出你的整个方法(所以也会退出你的循环)。如果不是,它就不会编译,除非你返回方法的类型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1829593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档