当有一类事务,除了类型,其他都相同外,他们可以共同继承一个泛型类,在泛型类里面,使用了抽象类型,这样只要在使用的时候赋予实际需求的类型就行了。
这样大大的提高的代码的重用性。
一、如何定义一个泛型类:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace GenericTest { public class BaseInfo<T>//一个基类,存储了十条T类型的数据,T是抽象类型 { public T[] baseInfo = new T[10];//可以存储10条信息,本处将用来存储编号与姓名 public T this[int i] { get { return baseInfo[i]; } set { baseInfo[i] = value;} } } }
在这个类中T就当作int float一类的类型进行操作,但是这个类中,T并不含有一些具体类型所拥有的方法,例如int.Parse(),T只有object类型有的方法。
实例化泛型时,做如下定义:
1 BaseInfo<int> baseInfo = new BaseInfo<int>();
这样便可以像普通类的实例一样使用baseInfo了,其中T被实例化为int
二、泛型的继承
1、泛型类继承中,父类的类型参数已被实例化,这种情况下子类不一定必须是泛型类;
2、父类的类型参数没有被实例化,但来源于子类,也就是说父类和子类都是泛型类,并且二者有相同的类型参数;
1 //如果这样写的话,显然会报找不到类型T,S的错误 2 public class TestChild : Test< T, S> { } 3 4 //正确的写法应该是 5 public class TestChild : Test< string, int>{ } 6 public class TestChild< T, S> : Test< T, S> { } 7 public class TestChild< T, S> : Test< String, int> { }