Q-->question        A-->answer        M-->mention
          The Chapter 16th  Generic

M:泛型为一种特殊机制,它支持除继承外的另一种代码重用,也就是"算法重用".

M:泛型中的T为一变量名,在源代码中能够使用一个数据类型的地方都能使用T:可做类中的字段,也能做局部变量,其使用时具体的数据类型被称为"类型实参",Type argument

Q:泛型可带来何种好处?
A:1.源码的保护=>不需要访问算法的源码,而C++或者Java的泛型技术则必须提供给准备使用泛型算法的客户
  2.类型安全性=>编译器将保证只有与指定数据类型兼容的对象才能随同算法使用
  3.更加清晰的代码=>强制了类型安全,因此不需要进行转换
  4.更佳的性能=>不必在转型尝试时检查类型安全,同时也减少了拆箱的次数(相对于值类型).不过,对引用类型,其性能和非泛型算法所差无几

M:设计规范=>泛型变量要么为T,要么为T开头,大写T代表Type,这和Interface一样

M:泛型类的继承和派生=>由于其本质还是一个类型,所以它可以从任何类型派生

Q:using有何用法?
A:1.导入命名空间 using System.Diagnostic;
  2.释放资源     using(SqlConnection conn = new SqlConnection()){}
  3.定义别名     using AAA = System.IO.FileStream..
    泛型的同一性identity和相等性equivalence即可用此方法解决

M:where子句是一个约束(constraint),以下为实例=>
  public static T Min<T>(T o1,T o2) where T:IComparable<T>
  where关键字告诉编译器为T指定的任何类型都必须实现同一类型的泛型IComparable接口

M:所有的值类型都拥有一个public无参构造器(隐式),两种特殊的主要约束=>
  1.  where T:class  --->允许类型实参为任何引用类型
  2.  where T:struct --->值类型

M:主要约束=>为引用类型,其只能有零个或一个,而将要约束则可以有零个或多个,其为一种接口类型,构造器约束只可以指定零个或一个

posted on 2007-06-20 12:24  晓木  阅读(121)  评论(0编辑  收藏  举报