Terry's blog

Focus on bigdata and cloud.

博客园 首页 新随笔 联系 订阅 管理

2007年11月16日 #

摘要: 委托 可以定义自己的类型参数。引用泛型委托的代码可以指定类型参数以创建已关闭的构造类型,就像实例化泛型类或调用泛型方法一样,如下例所示: public delegate void Del(T item); public static void Notify(int i) { } Del m1 = new Del(Notify); C# 2.0 版具有称为方法组转换的新功能,此功能适用于具体委托... 阅读全文
posted @ 2007-11-16 16:34 王晓成 阅读(845) 评论(0) 推荐(0) 编辑

摘要: 委托类型声明的格式如下: public delegate void TestDelegate(string message); delegate 关键字用于声明一个引用类型,该引用类型可用于封装命名方法或匿名方法。委托类似于 C++ 中的函数指针;但是,委托是类型安全和可靠的。有关委托的应用,请参见委托和泛型委托。 备注 委托是事件的基础。 通过将委托与命名方法或匿名方法关联,可以实例化委托... 阅读全文
posted @ 2007-11-16 16:21 王晓成 阅读(578) 评论(0) 推荐(0) 编辑

摘要: 在 C# 2.0 中,下限为零的一维数组自动实现 IList。这使您可以创建能够使用相同代码循环访问数组和其他集合类型的泛型方法。此技术主要对读取集合中的数据很有用。IList 接口不能用于在数组中添加或移除元素;如果试图在此上下文中调用 IList 方法(如数组的 RemoveAt),将引发异常。 下面的代码示例演示带有 IList 输入参数的单个泛型方法如何同时循环访问列表和数组,本例中为整数... 阅读全文
posted @ 2007-11-16 16:02 王晓成 阅读(404) 评论(0) 推荐(0) 编辑

摘要: 泛型方法是使用类型参数声明的方法,如下所示: class SwapTest { static void Swap(ref T left, ref T right) { T temp; temp = left; left = right; right = tem... 阅读全文
posted @ 2007-11-16 15:51 王晓成 阅读(531) 评论(0) 推荐(0) 编辑

摘要: 为泛型集合类或表示集合中项的泛型类定义接口通常很有用。对于泛型类,使用泛型接口十分可取,例如使用 IComparable 而不使用 IComparable,这样可以避免值类型的装箱和取消装箱操作。.NET Framework 2.0 类库定义了若干新的泛型接口,以用于 System.Collections.Generic 命名空间中新的集合类。 将接口指定为类型参数的约束时,只能使用实现此接口的类... 阅读全文
posted @ 2007-11-16 15:03 王晓成 阅读(949) 评论(0) 推荐(0) 编辑

摘要: 泛型类封装不是特定于具体数据类型的操作。泛型类最常用于集合,如链接列表、哈希表、堆栈、队列、树等,其中,像从集合中添加和移除项这样的操作都以大体上相同的方式执行,与所存储数据的类型无关。 对于大多数需要集合类的方案,推荐的方法是使用 .NET Framework 2.0 类库中所提供的类。有关使用这些类的更多信息。 一般情况下,创建泛型类的过程为:从一个现有的具体类开始,逐... 阅读全文
posted @ 2007-11-16 14:45 王晓成 阅读(789) 评论(0) 推荐(0) 编辑

摘要: 在定义泛型类时,可以对客户端代码能够在实例化类时用于类型参数的类型种类施加限制。如果客户端代码尝试使用某个约束所不允许的类型来实例化类,则会产生编译时错误。这些限制称为约束。约束是使用 where 上下文关键字指定的。下表列出了六种类型的约束: 约束 说明 ... 阅读全文
posted @ 2007-11-16 12:56 王晓成 阅读(1296) 评论(0) 推荐(0) 编辑

摘要: 在泛型类型或方法定义中,类型参数是客户端在实例化泛型类型的变量时指定的特定类型的占位符。泛型类(如泛型介绍(C# 编程指南)中列出的 GenericList)不可以像这样使用,因为它实际上并不是一个类型,而更像是一个类型的蓝图。若要使用 GenericList,客户端代码必须通过指定尖括号中的类型参数来声明和实例化构造类型。此特定类的类型参数可以是编译器识别的任何类型。可以创建任意数目的构造类型实... 阅读全文
posted @ 2007-11-16 11:31 王晓成 阅读(1058) 评论(0) 推荐(0) 编辑

摘要: 在公共语言运行库和 C# 语言的早期版本中,通用化是通过在类型与通用基类型 Object 之间进行强制转换来实现的,泛型提供了针对这种限制的解决方案。通过创建泛型类,您可以创建一个在编译时类型安全的集合。 使用非泛型集合类的限制可以通过编写一小段程序来演示,该程序利用 .NET Framework 基类库中的 ArrayList 集合类。ArrayList 是一个使用起来非常方便的集合类,无需进行... 阅读全文
posted @ 2007-11-16 11:16 王晓成 阅读(512) 评论(1) 推荐(0) 编辑