调用方法而不传递参数

SKN*_*SKN 3 c#

我是C#的初学者.我在我的项目中遇到了下面的代码片段.我不明白ViewHelper.IsInView在没有传递任何参数的情况下如何调用.任何人都可以解释我这个.提前致谢.

public static class ViewHelper
{
  public static bool IsInView(IFrameworkElement element)
  {
  ----------
  }
}

var Result = Views.Any(ViewHelper.IsInView);
Run Code Online (Sandbox Code Playgroud)

Eli*_*bel 5

Any方法接受表单的委托 - 指向函数的指针Func<T, bool>.这意味着它需要一个方法来接受集合类型的元素(我IFrameworkElement在你的情况下猜测)并返回一个bool- 这正是IsInView方法的签名.

Any然后,该方法对集合中的元素执行此委托,Views直到遇到返回的元素true.

在C#中,存在从"方法组"到委托类型的隐式转换.基本上,当你写作

Views.Any(ViewHelper.IsInView)
Run Code Online (Sandbox Code Playgroud)

它转化为

Views.Any(new Func<IFrameworkElement, bool>(ViewHelper.IsInView))
Run Code Online (Sandbox Code Playgroud)