软件频道>开发者网络>微软开发专栏>ASP.NETC#VB.NETVC.NET技术专题XML|软件频道产品中心群乐下载群乐:大家耍QQ
您现在的位置: 天极网 > 开发频道 > 微软开发专栏 > 彻底剖析C# 2.0泛型类的创建和使用
全文

彻底剖析C# 2.0泛型类的创建和使用

2005-11-24 09:44作者:朱先忠出处:天极开发责任编辑:方舟
  三、 实现一个泛型类

  一种合理的实现某种新功能的方法是在原有的事物上进一步构建。我们已经了解强类型集合,并知道一种不错的用来构建泛型类的技术是使用一个特定类并删除数据类型。也就是说,让我们定义一个强类型集合CustomerList,并且来看一下它要把什么东西转化成一个泛型类。

  列表2定义了一个类CustomerList。后面的部分把CustomerList转化成List<T>。

  列表2定义类CustomerList:

using System;
using System.Collections;
using System.Text;
namespace Generics{
 public class CustomerList : CollectionBase{
  public CustomerList() { }
  public Customer this[int index]{
   get { return (Customer)List[index]; }
   set { List[index] = value; }
  }
  public int Add(Customer value)
  {return List.Add(value);}
 }
}

  四、 定义类头

  如果我们定义一个泛型类,我们需要把类头转化成一个泛型类。所有我们需要做的是命名参数并且把类名改成某种泛型。List<T>只有一个参数T,并且因为我们在以一种向后兼容的方式工作,所以我们知道类名是List。列表3显示出列表2中类的新类头。

  列表3 一个泛型类头显示出参数化的参数T。

using System;
using System.Collections;
using System.Text;
namespace Generics{
public class List<T> : CollectionBase {}

  五、 实现泛型字段

  如果我们需要把任何字段转换成泛型字段,我们将只需简单地把它们的类型改变成T(或该字段所描述的任何参数)。泛型List不需要任何字段,但是假定存在一个私有的整型字段叫foo-我们将把它泛型化。我们将如下重新定义它:

private T foo;

  当参数T被填充到类中时,List T也将因foo被填充。

  六、 定义泛型方法

  接下来,我们为所需要的参数化类型定义其它一些特性。这包括属性,方法,和事件。在我们的实例中,在Customer出现的每一处,我们都用参数T替换它。完成后的泛型列表类显示于列表4中。

  列表4 一个基于System.Collections.CollectionBase的轻量级的参数化泛型列表类。

using System;
using System.Collections;
using System.Text;
namespace Generics{
 public class List<T> : CollectionBase {
  public List(){ }
  public T this[int index] {
   get { return (T)List[index]; }
   set { List[index] = value; }
  }
  public int Add(T value) {
   return List.Add(value);
  }
 }
}

  为了测试该定制列表,注释掉使用System.Collections.Generic命名空间一句并且把列表4中的List<T>使用在列表1的代码中;它将以同样的方式工作。

  全面地修改.NET的List<T>是不必要的而且它也包含远比我们的示例多得多的特性;但是列表4显示出这种机制对于定义定制泛型类是多么容易。

相关搜索:
关注此文读者还看过
热门关注
特别推荐
关于我们|About us|网站律师|天极服务|电子杂志|RSS订阅|加入我们|网站地图
TMG
Copyright (C) 1999-2009 Chinabyte.com, All Rights Reserved 版权所有 天极网络
商务联系、网站内容、合作建议:010-82657868
版权声明 在线提交意见反馈 Powered by 天极内容管理平台CMS4i
经营性网站备案信息 网警备案 中国网站排名
天极传媒:天极网|比特网|IT专家网|IT商网|52PK游戏网|IT分众