VisualC#泛型学习之泛型介绍

VisualC#泛型学习之泛型介绍,第1张

VisualC#泛型学习之泛型介绍,第2张

什么是泛型?

类型占位符或类型参数。我们知道在一个方法中,变量的值可以作为参数,但实际上,变量本身的类型也可以作为参数。泛型允许我们在调用时指定这个类型参数是什么。英寸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((狗)项);}
...
}

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » VisualC#泛型学习之泛型介绍

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情