VisualC#泛型学习之泛型介绍
什么是泛型?
类型占位符或类型参数。我们知道在一个方法中,变量的值可以作为参数,但实际上,变量本身的类型也可以作为参数。泛型允许我们在调用时指定这个类型参数是什么。英寸net中,泛型可以给我们带来两个明显的好处——类型安全和更少的装箱和解包。
类型安全、包装和拆包
作为一个类型参数,泛型很容易给我们带来类型安全。过去,在。为了实现类型安全,我们可以这样做:
//假设您有一个五线谱集合
public class Person {
private string _ name;
公共字符串名称
{ get { return _ Name;}
set { _ name = value;}}
}
//假设您有一个五线谱集合
公共类person collection:IList
{
...
private ArrayList _ Persons = new ArrayList();
public Person this[int index]
{ get { return(Person)_ Persons[index];} }
public int Add(Person item)
{ _ Persons。添加(项目);
return _Persons。count-1;}
public void Remove(Person item)
{ _ Persons。移除(项目);}
object ilist . this[int index]
{ get { return _ Persons[index];}
设置{ _Persons[index] = (Person)值;}}
int IList。Add(对象项)
{ return Add((人)项);}
void IList。Remove(对象项)
{ Remove((人)项);}
...
}
以上代码主要采用显式接口成员实现技术,可以实现类型安全,但问题是:
生成重复代码。假设你还有一个功能相同的狗类集合,但是为了类型安全,你必须复制一份代码,这样会增加程序的重复代码,面对变化的时候更难维护。
公共类dog collection:IList
{
...
private ArrayList _ Dogs = new ArrayList();
公狗this[int index]
{ get { return(Dog)_ Dogs[index];} }
public int Add(Dog item)
{ _ Dogs。添加(项目);
return _Dogs。count-1;}
public void Remove(狗项目)
{ _Dogs。移除(项目);}
object ilist . this[int index]
{ get { return _ Dogs[index];}
设置{ _Dogs[index] = (Dog)值;}}
int IList。Add(对象项)
{ return Add((狗)项);}
void IList。Remove(对象项)
{ Remove((狗)项);}
...
}
0条评论