您好,欢迎 来到润思科技-信息IT服务 长沙软件定 做外包公司!
0731-82519789

润思专业售 前支持

一"点"我帮您!

0731-82519789

24小时:13549648356

技术文档

您现在的位 置:主页 > 新闻中心 > 技术文档 >

.Net编程接口剖 析系列之比较和排序

作者:长沙软件公 司

我们知道, 与C++相比较,C#以及整个.Net并不支持多 继承,而相应的,C#支持了接口 ,并且支持一个类型实现多个接口。对于接口的概念,相信大部分读者已经有了很好的了解,而我这里谈谈个人对于接口理解,只求抛砖引玉。

在我认为, 一个接口就是一个对类型的某种能力的认证,并且是以某种标准化的形式将这种能力规范出来。你的类型实现了某个接口,换而言之,也就是说这个类型具备了此接口所标识的能力。比如现在出国留学考托福GRE,开车考驾 照这些东西,其实就是相当于我们编程中接口;从某种意义上说,你通过了GRE,就说明你 具备在国外学习所需要的语言能力,而你考取了驾照,就证明了你具有上路行驶的能力了。接口同样如此,给你类型实现特定的一些接口,就是给他们标记了他们所具备的特别能力,而一些依赖这些能力的功能,得以用通用的代 码实现重用,实现可扩展。

我的这个关 于接口的系列文章,主要是对.Net编程一些非 常重要的接口来进行详细讲解,深入了解这些接口的原理和应用。这对于我们写出精简优美的代码,是非常有帮助的;毕竟,我们在知道自己想做什么之后,首先应该知道.Net Framework能给我们做 什么。

在本篇以及 后续的几篇文章我们将会谈到以下几个主题:

(一)比较和排序 (IComparable和IComparer)

(二)枚举(IEnumerable和IEnumerator)

(三) 序列化(ISerializable和IXmlSerializable)

System.IComparable & System.IComparable<T>

顾名思义, 一个实现了IComparable的class应该就是一 个可以对实例进行相互比较的class,我们先来 看看它的定义:

以下为引用 的内容:
[ComVisible(true)]
public interface IComparable
{
int CompareTo(object obj);
}

这个接口相 当简单,只提供了一个接口函数:CompareTo,如果当前 对象比被比较的对象小,那么返回负数;如果相当,则返回0;如果当前 对象比被比较的对象大,则返回正数。

但是,如果 你觉得这个接口仅仅是能够让你比较两个对象大小,那么你就错了,这个接口更大的作用是能够实现了该类型线性数据结构的排序功能。比如List<T>.Sort()和Array的静态方法 Sort都能够很好 地利用IComparable来对数据进 行排序,排序算法由类库实现,对于我们来说,只需要让自己的类型实现IComparable接口,负责 比较两个对象大小的算法就可以了。

IComparable<T>是一个泛型 接口,用于实现对特定类型的对象的比较,用法和IComparable基本一致, 这里不再进行赘述,下面的例子也是根据IComparable来写的。

我们来看看 下面的代码,这里定义了一个学生类Student,每个学生 有自己名字和分数。Student类实现了IComparable接口,两个 学生之间直接按照名字进行比较。顺便说明Scores类用于存储 学生的成绩。

友情链接:    5630彩票官网   V博娱乐开奖网   V博娱乐开奖网   云购手机彩票官网   22彩票官网