C# 泛型 Func<object, string, bool> filter

Func<object, string, bool>是泛型,你可以先把他看成一个普通类型,比如stringpublic 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> listlist里边是string类型的集合. 

另外,这仅仅是泛型而非委托啊,第二行声明的Filter明显是filter的访问器,如果filter是委托,给他加个访问器你能编译过去才怪. 如果是委托,有把委托加到ListBox去显示去的吗?
时间: 2024-11-06 09:48:53

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

return columns.All(new Func&lt;string, bool&gt;(list.Contains));

internal static bool VerifyColumns(SqlConnection conn, string table, params string[] columns)         {             List<string> list = new List<string>();             using (SqlCommand sqlCommand = new SqlCommand("SELECT COLUMN_NAME FROM

swift 之嵌套的理解 func chooseStepFunction(backwards: Bool) -&gt; (Int) -&gt; Int

http://blog.csdn.net/lzx_322/article/details/28861199 swift 函数使用前面需要添加 func 有返回值需要使用-> 后面添加返回类型 ,很容易理解,在看英文版的pdf文档时候看到嵌套函数的返回值,刚开始没有太明白,仔细思考了一会还是很容易理解的: 例如:func stepBackward(input: Int) -> Int {return input - 1} 返回值是int型的. func chooseStepFunction(ba

java泛型与object的比较

在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的"任意化","任意化"带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的.对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患. 泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率. [java] view plain copy print? public 

上手并过渡到PHP7(2)——必须传递int, string, bool参数?没问题

Type hints, Type safe 泊学实操视频 泊学原文链接PHP 7中最引人注目的新特性之一,无疑是Scalar type hints.我们可以在函数参数和返回值中使用scalar type hints,还可以指定scalar type的推导和匹配方式. Scalar type hints Type hints并不是什么新生事物,PHP 5.0第一次引入了type hints特性,允许我们指定函数的参数是一个特定class或interface类型.之后,在PHP 5.1中,我们可以指

java泛型中&lt;? super String&gt;和&lt;? extends String&gt; 的区别

(1)<? super String> is any class which is a superclass of String (including String itself). (In this case, the only other suitable class is Object.) 即包括String的父类和它本身的类. (2) <? extends String> (which in this specific case wouldn't be very usefu

Object comparison - (BOOL)isEqual:(id)other

https://developer.apple.com/library/content/documentation/General/Conceptual/DevPedia-CocoaCore/ObjectComparison.html#//apple_ref/doc/uid/TP40008195-CH37-SW3 Object comparison refers to the ability of an object to determine whether it is essentially

Object,String,StringBuffer,StringBuilder,System,Runtime,Date,Math介绍及用法(API)

1       Object对象 面向对象的核心思想:“找合适的对象,做适合的事情”. 合适的对象: 自己描述类,自己创建对象. sun已经描述了好多常用的类,可以使用这些类创建对象. API(Application Program Interface) sun定义的那么多类的终极父类是Object.Object描述的是所有类的通用属性与方法. 1.1   toString方法 toString() 返回对象的描述信息   [email protected]   类名@哈希码值的十六进制形式.

泛型 &lt;? extends Object&gt; &lt;? super Object&gt;

参考:http://www.cnblogs.com/friends-wf/p/3582841.html ? 通配符类型 <? extends T> 表示类型的上界,表示参数化类型的可能是T 或是 T的子类 <? super T> 表示类型下界(Java Core中叫超类型限定),表示参数化类型是此类型的超类型(父类型),直至Object

.net下BerkeleyDB操作封装C#版(附单元测试)

using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Runtime.Serialization.Formatters.Binary;using System.Text;using BerkeleyDb;using Component;namespace ToolManager{   public class BDBRecord   {       public o