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里取元素,就不需要强制转化 ...
随机推荐
- 在Xbox和Hololens 上部署、调试UWP App
在Windows 10 Device 上,UWP App可以快速部署进行调试.PC(平板)和Phone就不用多说,网上的文章比较多.今天专门介绍一下怎么在Xbox One和HoloLens上部署调试U ...
- 【Java每日一题】20170110
20170109问题解析请点击今日问题下方的"[Java每日一题]20170110"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...
- 【C#】Deep copy of objects
If you learned C++ carefully, you must have known something about the copy of object. For example, I ...
- ES6 带来了什么
http://www.kuqin.com/shuoit/20150928/348317.html 这篇文章介绍了javascript 的大致历史 http://www.css88.com/archi ...
- 【锋利的Jquery】读书笔记七
第七章 jquery插件 管理cookie的插件--cookie jquery插件太多没什么好讲的,百度太多 说以下 cookie插件 <!DOCTYPE html> <html& ...
- R语言 决策树算法
定义: 决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解 ...
- Logstash使用grok过滤nginx日志(二)
在生产环境中,nginx日志格式往往使用的是自定义的格式,我们需要把logstash中的message结构化后再存储,方便kibana的搜索和统计,因此需要对message进行解析. 本文采用grok ...
- ECMAScript6之数值类型的扩展
数值类型的扩展 Number.isNaN ES6将isNaN方法从window身上移植到了Number对象上,使用时和ES5中的isNaN方法一样,但是这是Number对象的方法 Number.isN ...
- Python基础知识学习_Day7
一.Subprocess模块 1常用方法 执行命令,返回命令执行状态,0 or非0 >>> retcode = subprocess.call(["ls", &q ...
- java 调用打印机 打印服务
import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import javax ...