行情北京 上海 广州 深圳 沈阳 济南 郑州 武汉 长沙 南京 西安 成都 昆明 杭州
e杂志下载
 首页 | 资讯 网刊 视频 评测  企业:服务器 网络 存储 通信 安全 技术开发 信息化-方案 | ITPUB IXPUB
 商务笔记本 台式机 投影机 打印扫描 办公产品 耗材 软件 学院 下载 驱动  家庭数字家电 家庭组网
 个人DIY硬件 | 手机 GSM CDMA 无线电 GPS| 数码影像 相机 摄像机 | 消费数码 MP3 | 论坛 | 经销商社区
 报价中心 三维图秀 产品评论 产品大全 使用手册 术语详解 厂商专区 二手市场 维修服务 疑难解答 IT搜索
 

基于C# 2.0泛型构造一个二叉树类

作者:IT168 朱先忠 发表日期:2007-03-09 10:29
  内容导航: 上一页 1 2 下一页
 
【IT168技术文档】
一、 泛型简介

泛型(Generic)是C# 2.0新增的概念之一,其宗旨是避免进行强制类型转换的需求,提高类型安全性,减少需要的装箱量并且让程序员更轻松地创建泛型化的类和方法。泛型类和方法接受所谓的“类型参数”,由它们确定要操作的对象的类型。

二、 问题的提出
.NET框架2.0通过System.Collections.Generic命名空间提供了许多集合类和接口的泛型版本。
.NET框架类库已经包含了大量现成的泛型类。当然,用户也可以根据自己的需要定制泛型类。不知何原因,微软恰好在System.Collections.Generic命名空间中遗漏了二叉树类。须知,二叉树是一种非常有用的数据结构,可用它实现大量的操作,其中包括以极快的速度来排序和搜索数据。

在本文中,我们将使用.NET 2.0泛型概念构造一棵基本的二叉树,使其能容纳多种类型的数据。

三、 使用泛型构造二叉树类实例
由于二叉树类在许多程序中都能用到;所以,最好我们把它做成一个类库以便重用。然后,可以到处重用这个类,而无需复制源代码并重新编译它。

【提示】在.NET中,类库是一系列已经编译的类的集合,所有这些类都存储在一个程序集中。程序集是一个通常采用.dll扩展名的文件。其它项目和应用程序可以添加对程序集的一个引用,然后使用using语句,将它的命名空间带入自己的范围中,从而利用类库中的内容。

启动Visual Studio 2005。选用“类库”模板来创建一个新的Visual C#项目,并将项目命名为BinaryTree。然后,在解决方案资源管理器中,将文件名Class1.cs改变为Tree.cs。

接下来,对Class1类的定义作如下修改,最后代码如下所示:
namespace BinaryTree { public class Tree<T> where T : IComparable<T> { private T data; private Tree<T> left; private Tree<T> right; //……
【提示】泛型和约束常常是联系在一起使用的。通过约束,可以将一个泛型类的类型参数限制成实现了一系列特定接口的类型(所以它们能够提供由那些接口定义的方法)。
在本例中,我们修改Tree<T>类的定义,指定类型参数T必须是实现了泛型IComparable<T>接口的一个类型。

【提示】如果我们需要创建一个类,要求它能够根据某种排序方式对值进行比较,那就要实现IComparable接口。此接口包含一个CompareTo方法,由它来获得单个参数,并返回一个整数以指出比较结果。

上一页 1 2 下一页
【内容导航】  
第2页 具体实现以及小结
【相关文章】  
Orcas中C#语言的新特性 Scott Guthrie:..
.net 2.0(c#)下简.. 不经保存,直接读取上传文件的内容
Asp.net(C#)常用函数表 TSS.Net调查:技术人员..
C#类型转换之初级篇 ASP.NET 2.0高级数..
Web 2.0烧钱 Web 2.0失败
下一篇:C# GDI+编程之基础篇
©版权所有。未经许可,不得转载。 【责任编辑:熊建国
 
  网友评论