zoukankan      html  css  js  c++  java
  • 解释下Func<T, bool> exp

    比如 

    interface IRepository<T> where T:class
        {
            IEnumerable<T> FindAll(Func<T, bool> exp);
        }
    


    我现在要调用FindAll方法,要怎么用?

    Func<T, bool> exp
    1、Func是一个匿名委托(形参exp的类型)
        T是Func这个委托中的传入参数,即接口IRepository<T>的类型参数,由于带有约束where T:class, 所以T只能是类,而不能是结构等其他类型
        bool代表Func的返回参数类型为bool
    2、exp是方法的形参,Func委托类型的实例
    3、IEnumerable<T>是方法的返回类型

    用的时候可以这样
    List<string> list = new List<string>();
    这里只是举一个例子,实际中,只要是实现了IRepository<T>这个接口的类实例都可以这么用
    list.FindAll(new Func<string, bool>(delegate(string str){ return str.Length > 0; }));
    list.FindAll(delegate(string str) { return str.Length > 0; });
    list.FindAll(new Func<string, bool>(str => {return str.Length > 0;}));
    list.FindAll(new Func<string, bool>(str => str.Length > 0));

    写法都是等效的,编译以后FindAll()里面的部分都是一个委托类型的实例
    最后一个直接简化成一个Lambda表达式了
    整个方法的返回类型为IEnumerable<string>

    List<string> list = new List<string>();
    list.FindAll(new Func<string, bool>(delegate(string str){ return str.Length > 0; }));
    list.FindAll(delegate(string str) { return str.Length > 0; });
    list.FindAll(str => {return str.Length > 0;});
    list.FindAll(str => str.Length > 0);

  • 相关阅读:
    第七章 过滤器 Filter(二)
    第七章 过滤器基础 Filter
    学了近一个月的java web 感想
    js写的一个简单的手风琴菜单
    第六章 对象作用域与servlet事件监听器
    第五章 Web应用程序状态管理
    第四章 使用Servlet处理HTTP请求
    第三章 使用Servlet处理HTTP响应
    第二章 Servlet基础
    myeclipse解决Fail to create the java Virtual Machine
  • 原文地址:https://www.cnblogs.com/longyi/p/3541964.html
Copyright © 2011-2022 走看看