Func<object, string, bool>是泛型,你可以先把他看成一个普通类型,比如string
public class Func{ } // 自定义个普通类. Func filter; // 自定义个字段
public Func Filter // 属性,上个字段filter的访问器.类型为Func
{
get
{ return filter;}
set
{ }
}
不考虑Func<object, string, bool>,上段代码明白不?,不明白我在给你解释.
下面说泛型 假如有下列几个自定义类,每个类都有个成员my_item,但是my_item得类型都不一样
class Func1
{
public int my_item;
}
class Func2
{
public string my_item;
}
class Func3
{
public bool my_item;
} 要用int的my_item,就要用 Func1 my_func = new Func1();
要用bool的,就要用 Func3 my_func = new Func3(); 这个时候就显示出泛型的用处了:
class Func<T>
{
public T my_item; // 就类定义来说,这里的T是个未知类型
}
这就是泛型,作用是将类型的指定推迟到客户端代码声明并实例化该类或方法的时候
顾名思义,泛型,就是说是广泛的类型,这个public T my_item中的类型T,可能是个int型,也可能是string型,也可能是List,或者Array等等等等
总而言之,它可能是任何类型.
怎么确定这个T到底是什么类型呢?看上边那句话:将类型的指定推迟到客户端代码声明并实例化该类或方法的时候 以下代码声明并实例化一个Func<T>,
你可以把T看做是一个变量,这个变量只接受类名称.
Func<int> my_Func = new Func<int>;
//这个时候,类成员public T my_item 实际上就是public int my_item
//就是说,用声明和实例化的时候<>里边的类型,替换所有类定义里边T.
Func<string> my_Func = new Func<string>;
//这个时候,类成员public T my_item 实际上就是public string my_item 我们再把类定义的泛型扩展:
class Func<T1, T2, T3>
{
public T1 my_item1;
public T2 my_item2;
public T3 my_item3;
} 然后我们在其它类里边定义个成员my_Func:
Func<int, Object, TextBox> my_Func;
这样,my_item1就是int型,my_item2是个Object, my_item3是个TextBox控件.
然后,再定义个属性My_Func,为my_Func设置个访问器:
public Func<int, Object, TextBox> My_Func
{
get{}
set{}
} 其实,一句话,泛型的作用就是为声明和实例化个一个类实例的时候,把类型作为个参数. 例如 List<string> list
list里边是string类型的集合. 另外,这仅仅是泛型而非委托啊,
第二行声明的Filter明显是filter的访问器,如果filter是委托,给他加个访问器你能编译过去才怪.
如果是委托,有把委托加到ListBox去显示去的吗?

C# 泛型 Func<object, string, bool> filter的更多相关文章

  1. expression<Func<object,Bool>> 及 Func<oject,bool>用法

    using System;using System.Collections.Generic;using System.Linq;using System.Linq.Expressions;using ...

  2. return columns.All(new Func<string, bool>(list.Contains));

    internal static bool VerifyColumns(SqlConnection conn, string table, params string[] columns)        ...

  3. js常用API 数据类型 基本类型,基本包装类型,引用类型 Object String Array Boolean Number Date Math

    数据类型 变量.作用域及内存 基础类型(primitive value):Undefined.Null.Boolean.Number和String.这些类型在内存中分别占用固定大小的空间,他们的值保存 ...

  4. swift 之嵌套的理解 func chooseStepFunction(backwards: Bool) -> (Int) -> Int

    http://blog.csdn.net/lzx_322/article/details/28861199 swift 函数使用前面需要添加 func 有返回值需要使用-> 后面添加返回类型 , ...

  5. Junit 注解 类加载器 .动态代理 jdbc 连接池 DButils 事务 Arraylist Linklist hashset 异常 哈希表的数据结构,存储过程 Map Object String Stringbufere File类 文件过滤器_原理分析 flush方法和close方法 序列号冲突问题

    Junit 注解 3).其它注意事项: 1).@Test运行的方法,不能有形参: 2).@Test运行的方法,不能有返回值: 3).@Test运行的方法,不能是静态方法: 4).在一个类中,可以同时定 ...

  6. java泛型与object的比较

    在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下 ...

  7. java - day009 - 基础API,object,String, StringBuilder/StringBuffer, 正则表达式

    API java.lang.object object 所有类的顶层父类 一个类如果不继承其他类,默认继承object.    toString() 获得一个对象的字符串表示     可以重写     ...

  8. Object&&String学习

    Object类 列表项 String类 常用方法 构造方法 public String() public String(byte[] bytes) public String(byte[]bytes, ...

  9. 泛型与object

    一.泛型通俗的理解就是限制list集合里面的数据类型 比如List<int>,就限制LIST里面必须是int,这样放入其他就有报错(保证了安全),然后从 list里取元素,就不需要强制转化 ...

随机推荐

  1. anadonca环境配置和模块安装

    1.最方便的python环境配置: 下载anaconda即可,自带spyder,集成科学计算的库,自带pip,不用折腾. 想用sublime编写python并运行的话,需要自己配置编译环境,并下载插件 ...

  2. dapper 可空bool转换出错及解决方案

    最近使用entityframewok生成数据库,使用dapper来访问数据库,产生了一个意外的bug,下面是产生bug的示例以及解决方案. 由于用entityframework生成数据库,默认情况en ...

  3. canvas 弹幕效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. Javascript使用postMessage对iframe跨域通信

    今天才发现原来有这么个好东西啊,跨域通信太方便了, 举个小栗子: 共两个页面, 页面1:www.a.com/a.html 页面2:www.b.com/b.html 实现目标:两个网站页面实现跨域相互通 ...

  5. iOS开发-OC语言 (五)字典

    字典 主要知识点: 1.NSDictionary 类 2.NSMutableDictionary 类 3.了解NSMutableDictionary 与 NSDictionary 的继承关系 4.补充 ...

  6. selenium自动化过程中遇到的小问题(未完待续)

    1.chrome浏览器调用不起来 代码没出错的情况下,检查下chrome浏览器的版本与chromedriver.exe的版本是否匹配;下面的表格是根据网上及官网整理的chromedriver与chro ...

  7. 三分钟跑起jsblocks

      1下载代码 git clone https://github.com/astoilkov/jsblocks-seed.git 2安装依赖 Peng@PENG-PC /F/home/qianduan ...

  8. 在使用cognos时遇到的问题记录帖

    在使用cognos时遇到的问题记录帖 1.开一个project 报无法访问位于 URL 的服务: http://localhost:80/ibmcognos/cgi-bin/cognos.cgi?b_ ...

  9. MATLAB ' : ' 官方解释

    1.冒号的作用 产生矢量,阵列标注以及for-loop迭代子 2.描述 冒号是MATLAB中最有用的操作符之一.它使用下述规则来创建有规则的空间矢量: j:k is the same as [j,j+ ...

  10. 第一百二十一节,JavaScript事件绑定及深入

    JavaScript事件绑定及深入 学习要点: 1.传统事件绑定的问题 2.W3C事件处理函数 3.IE事件处理函数 4.事件对象的其他补充 事件绑定分为两种:一种是传统事件绑定(内联模型,脚本模型) ...