比如

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);

最新文章

  1. DirectWrite 模糊问题——如何正确根据DIP计算实际像素
  2. 移动APP的开发迭代离不开测试,你搞清楚其中的关键点了吗?
  3. Linux 系统把英文修改成中文界面
  4. html5离线存储
  5. C++: byte 和 int 的相互转化
  6. 走出 null 就是空值的误区,以及变量赋值原理
  7. [改善Java代码] 推荐使用序列化实现对象的拷贝
  8. SQL 生成可配置流水号
  9. Codeforce 221 div1
  10. href=&amp;quot;javascript:void(0);&amp;quot;与#差异
  11. Spring Cloud搭建微服务架构----前言
  12. Linux中的apache的服务命令
  13. poj-3522 最小生成树
  14. Zabbix 3.0的前端默认在Centos 6上不支持
  15. magento 1.9 上传后图片前后台无法正常显示
  16. intellij idea 汉化
  17. Python对象相关内置函数
  18. Spectral Bounds for Sparse PCA: Exact and Greedy Algorithms[贪婪算法选特征]
  19. Python-socketserver实现并发- 源码分析
  20. 【Py-Github】根据条件筛选Github repo的例子

热门文章

  1. Erlang中的record与宏
  2. erlang分布式入门(一)-ping pong
  3. Android Xfermode 真实 实现全面、圆角图片
  4. matlab 图像分块及恢复
  5. C# 从零开始写 SharpDx 应用 控制台创建 Sharpdx 窗口
  6. numpy 代码优化(一)—— 常见手段
  7. LeetCode: Generate Parentheses [021]
  8. 全栈工程师之路(二)—— JavaScript(网页前端脚本语言)
  9. Maven环境下Poi的使用
  10. C#或者WPF中让某个窗体置顶