我是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)
该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)