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. linux环境变量入门

    一.概要 本文用java环境变量配置这个案例来介绍linux下的环境变量是怎样的,并且和windows系统下的环境变量语法进行了相应对比,适合初学者入门.在这之前,我已经将jdk.tomcat和ecl ...

  2. [ios2] ios7UI适配 【转】

    http://blog.csdn.net/toss156/article/details/11843873#comments (1)如果应用程序始终隐藏 status bar 那么恭喜呢,你在UI上需 ...

  3. import,include

    1. #import导入头文件,即:导入头文件中的内容到当前类 2. #import ""导⼊自定义类,#import <>导入类库中的头文件. 3.功能类似C语言中的 ...

  4. curl命令PostJson

    curl -H "Content-Type: application/json" -X POST  --data '{"data":"1"} ...

  5. ubuntu安装jdk的两种方法

    方法一: 这种方法比较简单,保证虚拟机网络畅通就可以了 sudo apt-get update sudo apt-get install default-jre sudo apt-get instal ...

  6. ubuntu 使用apt-get install 安装php5.6--php7

    使用ppa增加源:$ sudo apt-get install python-software-properties $ sudo add-apt-repository ppa:ondrej/php ...

  7. Linode VPS上架日本东京2号机房,性能速度评测报告(推荐)

    我非常喜欢的海外免备案vps品牌linode日本机房长期缺货,中国用户想买都买不到.不过近日,陆续有国内朋友收到了Linode邀请,Tokyo 2日本东京机房开启内测,很快正式上架销售. 苦等太久的站 ...

  8. EasyCHM(CHM电子书制作工具) v3.84.545 绿色版

    软件名称:EasyCHM(CHM电子书制作工具) v3.84.545 绿色版 软件语言: 简体中文 授权方式: 免费软件 运行环境: Win 32位/64位 软件大小: 2.78MB 图片预览: 软件 ...

  9. CentOS网络接口配置文件ifcfg-eth详解

    ======CentOS网络接口配置文件ifcfg-eth详解====== 文件 /etc/sysconfig/network-scripts/ifcfg-eth0在/etc/sysconfig/ne ...

  10. 基于 Consul 的 Docker Swarm 服务发现

    Docker 是一种新型的虚拟化技术,它的目标在于实现轻量级操作系统的虚拟化.相比传统的虚拟化方案,Docker 虚拟化技术有一些很明显的优势:启动容器的速度明显快于传统虚拟化技术,同时创建一台虚拟机 ...