• 23
  • 1月

泛型(generics)
这两天一直在与泛型做斗争,现在总算是把这一章的内容都看完了。整理一下心得
泛型(generics),C++中称为模板。是.net 2.0中才加入的技术。

个人觉得“模板”这个称呼更准确些,泛型这个东西就是一种类的模板,把一个具体的类A套进去,便成为了对这个类A进行操作的一个新类B,实现了对A类的一些操作和功能。

常用的几个系统定义好的泛型:
1.可空类型 System.Nullable<>
如:System.Nullable nullableInt;即定义了一个可空的int变量(个人感觉是把int封箱到了一个Nullable的对象中。使用了隐式类型转换)

C#甚至修改了语法,提供了一种更高效的方法定义可空类型:
int? nullableInt;
这种int变量是可以使用if(null==nullableInt)的方法判断是否有值。另外还有HasValue属性可用。
但将int?变量赋给int时需要显式类型转换,例:
int? op1=5;
int result=(int)op1*2;

系统还提供一个新的语法用以处理结果为null的运算–“??”运算符
使用方法,例:
int? op1=null;
int result=op1*2 ?? 5;
当op1*2得到一个null时,将??之后的5赋值给result。另外这种方法还可以省去表达式前的显式类型转换符。

using System.Collections.Generic;之所以默认被加载到项目中,因为它是List和Dictionary的命名空间。非常之常用。

List可以非常方便地定义一个自己的类A的列表。
使用方法,例:
List myClassCollection = new List();
之后就可以直接使用myClassCollection的Add()、Remove();方法,用foreach遍历myClassCollection了。

至于定义泛型类,用的时候现看吧。实在是很麻烦的说…

您可以对这篇文章发表一条评论,或者在您自己的网站中引用 (Trackback) 它

发表一条评论

所有标签:.net Ajax Java javascript Linux map MySQL RSS TD-SCDMA Ubuntu vim web Win7 乱码 基础知识 备份 奥运会 希望泉 性能 缓存 编程