.net 2.0中使用泛型的一种技巧
来源:互联网 发布:绝地求生amd显卡优化 编辑:程序博客网 时间:2024/05/22 07:07
泛型的使用需要在关键字(如List和Dictionary)后面紧跟用<>包含着的类型名称,如果同一种写法多次使用到,则会显得有些繁冗。例如下面的代码,定义了一个类Person,表示对“人”的简单抽象,而在现实世界中,“人”经常是成群地以“集合”方式出现,这里就选择Dictionary作为集合的数据结构来描述这样一个集合。
using System;
using System.Collections.Generic;
class Person
...{
private int identityNO;
private string name;
public int IdentityNO
...{
get ...{ return identityNO; }
set ...{ identityNO = value; }
}
public string Name
...{
get ...{ return name; }
set ...{ name = value; }
}
public Person(int identityNO, string name)
...{
this.identityNO = identityNO;
this.name = name;
}
}
class TestApp
...{
public static void Main(string[] args)
...{
// 定义公司A的员工集合,需要显式地指明key和value的类型
Dictionary<int, Person> personsOfCompanyA = new Dictionary<int,Person>();
personsOfCompanyA.Add(111, new Person(111, "张三"));
personsOfCompanyA.Add(222, new Person(222, "李四"));
personsOfCompanyA.Add(333, new Person(333, "王五"));
// 此处定义B公司的员工集合,同样地该声明语句需要指明Dictionary中key的类型,和value的类型
Dictionary<int, Person> personsOfCompanyB = new Dictionary<int, Person>();
personsOfCompanyA.Add(444, new Person(444, "郭靖"));
personsOfCompanyA.Add(555, new Person(555, "王蓉"));
personsOfCompanyA.Add(666, new Person(666, "段誉"));
// 下面再声明多个Person组成的集合
Dictionary<int, Person> personsOfCompanyC = new Dictionary<int, Person>();
Dictionary<int, Person> personsOfCompanyD = new Dictionary<int, Person>();
Dictionary<int, Person> personsOfCompanyE = new Dictionary<int, Person>();
}
};
在上面的代码中可以发现,每次定义Person集合的时候都需要显式地指出集合中key和value的类型,如果对Dictionary<int,Person>进行封装,则可以精简代码的编写。
使用与上述代码相同的Person类,新增一个集合类PersonDictionary用于封装Dictionary<int,Person>。
// 定义一个集合类,该类继承与Dictionary,并且强制指定了key和value的类型分别为int和Person
class PersonDictionary : Dictionary<int, Person>
...{
// 可以在此处添加新的属性或方法
};
// 则在TestApp类中可以使用PersonDictionary 作为Person集合的数据结构
class TestApp
...{
public static void Main(string[] args)
...{
// 定义公司A的员工集合,无需再显式地指明key和value的类型
PersonDictionary personsOfCompanyA = new PersonDictionary();
personsOfCompanyA.Add(111, new Person(111, "张三"));
personsOfCompanyA.Add(222, new Person(222, "李四"));
personsOfCompanyA.Add(333, new Person(333, "王五"));
// 此处定义B公司的员工集合
PersonDictionary personsOfCompanyB = new PersonDictionary();
personsOfCompanyA.Add(444, new Person(444, "郭靖"));
personsOfCompanyA.Add(555, new Person(555, "王蓉"));
personsOfCompanyA.Add(666, new Person(666, "段誉"));
// 下面再声明多个PersonDictionary的集合
PersonDictionary personsOfCompanyC = new PersonDictionary();
PersonDictionary personsOfCompanyD = new PersonDictionary();
PersonDictionary personsOfCompanyE = new PersonDictionary();
}
};
修改后的代码在视觉上和.net 1.1有很多相似,只需要新增一个PersonDictionary集合类,使用这样的方法可以很快地将原有.net 1.1的代码转移到.net 2.0平台而不用做过多的修改。同时在PersonDictionary中可以添加一些在项目中使用倒的属性和方法,以对Dictionary进行扩展。
对于其他支持泛型的类如List,也可以实现类似上面的代码封装。
- .net 2.0中使用泛型的一种技巧
- List 的一种使用技巧
- .net 2.0中新增的nullable类型_asp.net使用技巧
- .NET中高速缓存使用技巧
- ASP.NET 2.0中在gridview中使用DataFromatString的小技巧
- .NET中书写的一种简单方法
- .net中隐藏层的一种写法
- asp.net中WebUserControl的使用小技巧
- 使用Vs.Net 的一些小技巧(不断更新中)
- ASP.NET中Response.BufferOutput的使用技巧
- VB.net数据库编程中DataGrid控件的使用技巧
- ASP.NET 2.0中ListBox中批量删除的技巧
- [原创]VB.net技巧之七----asp.net中cookie的使用
- Gmetad中使用的一种设计模式
- Qt中多线程的一种使用
- Android中startActivityForResult的一种特殊使用
- WoW 2.0 中...的使用技巧
- 一种基于.Net 2.0的另类AOP
- 世界上最漂亮的超级计算机
- js控制div得vidible属性。
- gcc使用的方法【转】
- web services 中 传递 对象 数组
- 简单的SOA案例:工作申请系统
- .net 2.0中使用泛型的一种技巧
- 国际:为什么每个程序员都要学C语言的五个理由
- web services 中 传递 二进制 流 文件
- JAVASCRIPT 当光标离开时加上千分符
- 一段隐藏注册表项的代码
- Apache Tuscany SCA Java 架构指南
- Css2样式表之伪类
- SCA软件架构设计理念分析
- Visual Studio 工具 - 拼写检查