C# 泛型 Func<object, string, bool> filter
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的更多相关文章
- expression<Func<object,Bool>> 及 Func<oject,bool>用法
using System;using System.Collections.Generic;using System.Linq;using System.Linq.Expressions;using ...
- return columns.All(new Func<string, bool>(list.Contains));
internal static bool VerifyColumns(SqlConnection conn, string table, params string[] columns) ...
- js常用API 数据类型 基本类型,基本包装类型,引用类型 Object String Array Boolean Number Date Math
数据类型 变量.作用域及内存 基础类型(primitive value):Undefined.Null.Boolean.Number和String.这些类型在内存中分别占用固定大小的空间,他们的值保存 ...
- swift 之嵌套的理解 func chooseStepFunction(backwards: Bool) -> (Int) -> Int
http://blog.csdn.net/lzx_322/article/details/28861199 swift 函数使用前面需要添加 func 有返回值需要使用-> 后面添加返回类型 , ...
- Junit 注解 类加载器 .动态代理 jdbc 连接池 DButils 事务 Arraylist Linklist hashset 异常 哈希表的数据结构,存储过程 Map Object String Stringbufere File类 文件过滤器_原理分析 flush方法和close方法 序列号冲突问题
Junit 注解 3).其它注意事项: 1).@Test运行的方法,不能有形参: 2).@Test运行的方法,不能有返回值: 3).@Test运行的方法,不能是静态方法: 4).在一个类中,可以同时定 ...
- java泛型与object的比较
在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下 ...
- java - day009 - 基础API,object,String, StringBuilder/StringBuffer, 正则表达式
API java.lang.object object 所有类的顶层父类 一个类如果不继承其他类,默认继承object. toString() 获得一个对象的字符串表示 可以重写 ...
- Object&&String学习
Object类 列表项 String类 常用方法 构造方法 public String() public String(byte[] bytes) public String(byte[]bytes, ...
- 泛型与object
一.泛型通俗的理解就是限制list集合里面的数据类型 比如List<int>,就限制LIST里面必须是int,这样放入其他就有报错(保证了安全),然后从 list里取元素,就不需要强制转化 ...
随机推荐
- tampermonkey,采用js解析自定义脚本,实现网页列表数据采集分析
最近一直在做数据采集的事情,目的是使用java开发一套分析指定采集规则,模拟用户动作做数据提取.因此定义了一套动作脚本,open,click,get,list,opentab,closetab...j ...
- CMake学习
CMake学习 本篇分享一下有关CMake的一些学习心得以及相关使用. 作者:AlphaGL.版权所有,欢迎保留原文链接进行转载 :) 本文目录如下: 1.CMake介绍 2.CMake安装与使用 2 ...
- 使用Freemarker创建word文档
最近做一个项目,本来是直接在网页上查看文本信息,然后给客户直接打印的,但是发现也许是浏览器还是打印机的原因,总之,有个客户打印出来的格式始终与其他的不同,没办法,最后想到了直接将数据库中的信息生成一个 ...
- github 自学文档 希望可以给初学的人一些帮助
一 .git的安装 windows下面的安装:https://git-for-windows.github.io 从这里下载完全无脑安装. 安装完成后,在开始菜单里找到"Git" ...
- 浅谈Web前端浏览器兼容问题
对于兼容最近一直困扰我,以前写的代码只是针对高质量用户来使用 不考虑IE7,8 这样的浏览器 ,但是最近我开发的时候必须要兼容,大喊一声我曹,没有办法,自己来吧! 所谓的浏览器兼容性问题,是指因为不同 ...
- java基础面向对象之类与对象
java基础面向对象之类与对象 2017-01-14 1.面向对象的基本概念 以一种组建化的形式进行代码设计 1)在面向对象程序设计中包含有如下几种特性 •封装性:保护内部结构的安全性 •继承性:在已 ...
- table排名次
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 【转】Hive执行计划
执行语句 hive> explain select s.id, s.name from student s left outer join student_tmp st on s.name = ...
- mysql与oracle在groupby语句上的细节差异
前言 之所以去纠那么细节的问题,是因为之前有过一个这样的场景: 有个同学,给了一条数据库的语句给我,问,为啥这样子的语句在oracle语句下执行不了. select * from xx where x ...
- Chapter 21_3 模式
很多地方都会看到各种匹配模式,每次接触这些函数,颇使人望文生畏. 今天就来好好面对它.认识它.了解它.最后战胜它. 匹配模式都是用一串常规的字符串来描述,最主要的是理解这些字符串的语法及含义(即它能匹 ...