C#学习系列之泛型类
泛型
泛型:模具,可以塑造很多产品。
class Cage<T>//用T可以直接替换多种类型
{
T[] petsArray;
public void Putln(T pet){}
public T TakeOut(int index){}
}
class DogCage
{
Dog[] petsArray;
public void Putln(Dog pet){}
public Dog TakeOut(int index){}
}
class CatCage
{
Cat[] petsArray;
public void Putln(Cat pet){}
public Cat TakeOut(int index){}
}
var dogCage=new Cage<Dog>();
var catCage=new Cage<Cat>();
需要多种方式使用的时候,就可以直接用T来实例化进行使用。 T可以是object,类型会比较宽泛,需要显式转换类型。
class Cage<T>{}//泛型类声明
Cage<Dog> dogCage;//Cage<Dog>类型的引用
dogCage=new Cage<Dog>();//构造实例
多次实例化就可以使用,只要维护模板,易于维护。
public class Cage<T>
{
T[] array;
readonly int Size;
int num;
public Cage(int n)
{
Size =n;
num=0;
array=new T[Size];
}
public void Putin(T pet)
{
if(num<Size)
{
array[num++]=pet;
}
else
{
Console.writeLine("cage is full");
}
}
public T TakeOut()
{
if(num>0)
{
return array[--num];
}
else
{
Console.writeLine("cage is empty");
return default(T);
}
}
var dogCage=new Cage<Dog>(1);//定义只有一个
dogCage.Putin(new Dog("A"); //只放进去一个
var dog=dogCage.TakeOut();//把A取出来
dog.PrintName();
通过上述的操作,只需要定义一个就可以后续替换,多次实例化来进行使用。