从C#3.0中的匿名委托返回

Dan*_*iel 1 c# delegates c#-3.0

如果你在一个方法中并传入一个匿名委托,那么'return'关键字是否会为匿名委托返回一个值,还是会返回该函数?我知道在ruby中,他们使用'next'来实现块内的这种类型的功能.

这是一个例子:

public bool X()
{
   AList.Where(x => 
    {
       if (x.val == 1) return true;

       ....
       return someBool;
    }
   ...
   return anotherBool
}
Run Code Online (Sandbox Code Playgroud)

Amy*_*y B 9

'return'关键字是否为匿名委托返回一个值,还是返回该函数?

它从匿名委托返回.

.Where()没有返回bool,你可能会尝试.Any()

public bool X()
{
  bool result = AList.Any(x => x.val == 1);
  return result;
}
Run Code Online (Sandbox Code Playgroud)

或者您可以使用捕获的变量:

bool y = false;
Func<int, bool> checker = x =>
{
  if (x == 1)
  {
     return true;
  }
  y = true;
  return false;
}

AList.Where(checker).ToList();
Run Code Online (Sandbox Code Playgroud)