来自bool函数在C#循环内返回false

时间:2016-03-03 12:58:03

标签: c#

我最近被告知,从循环内部返回false是一种不好的做法,尽管实际上可能不会多次调用它。有一个辅助标志来实际打破这些功能更好吗?

foo()
{
  if(bar)
    //somecode
  else
    //some other code
}
private static bool bar(int x)
{
for(int i=0;i<10;i++) 
{
    if(i<x)
    {
         return false;
         break;
    }
    //some operation 
}

这个break语句是否必要,考虑到布尔函数已经从那时返回

2 个答案:

答案 0 :(得分:0)

Break语句不必要

这是

的原因 foo()

IL代码

bool flag = this.bar();
if (flag)
{
    // some commented code
}

并在 IL代码 bar()

注意没有

  

中断;

行后

  

返回结果;

private bool bar()
{
    bool result;
    int num;
    for (int i = 0; i < 10; i = num + 1)
    {
        bool flag = i < 1;
        if (flag)
        {
            result = false;
            return result;
        }
        num = i;
    }
    result = true;
    return result;
}
  

中断;

编译为IL代码

时,C#编译器实际上删除了

答案 1 :(得分:-1)

通常

return是退出方法并返回结果的指示符。

当你想要退出循环,迭代过程时,使用

break

我认为这不是最佳方法,但你可以做到这一点,至少编译器会知道该怎么做但是建议你警告。

您应该看到break警告