关于IComparable接口

实现IComparable接口,需要实现CompareTo方法,该方法在MSDN中定义如下:

 

Compares the current instance with another object of the same type.

(比较当前实例和另一个相同类型的对象)

Namespace: System
Assembly: mscorlib (in mscorlib.dll)

C#
int CompareTo (
            Object obj
            )

Parameters

obj

An object to compare with this instance.

Return Value

A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings:

Value

Meaning

Less than zero

This instance is less than obj.        若返回值为负,当前实例小于比较对象

Zero

This instance is equal to obj.          若返回值为零,当前实例等于比较对象

Greater than zero

This instance is greater than obj.     若返回值为正,当前实例大于比较对象

实际应用中,System.Array中的很多方法都需要实现该接口,如:

  • Array.IndexOf
  • Array.LastIndexOf
  • Array.Sort
  • Array.Reverse
  • Array.BinarySearch

示例代码如下:

 

 1using System;
 2
 3namespace icom_ex
 4{
 5    public class XClass : IComparable 
 6    {
 7        public XClass(int data)
 8        {
 9            propNumber = data;
10        }

11
12        private int propNumber;
13
14        public int Number
15        {
16            get 
17            {
18                return propNumber;
19            }

20        }

21
22        public int CompareTo(object obj)
23        {
24            XClass comp = (XClass)obj;
25            if (this.Number == comp.Number)
26                return 0;
27            if (this.Number < comp.Number)
28                return -1;
29            return 1;
30        }

31  
32    }

33    public class Starter
34    {
35        public static void Main()
36        {
37            XClass[] objs = new XClass(5), new XClass(10) ,new XClass(1)};
38            Array.Sort(objs);
39            foreach (XClass obj in objs)
40                Console.WriteLine(obj.Number);
41        }

42    }

43}

44
如不实现CompareTo函数,调用Array.Sort时会出现一个错误!

posted on 2008-08-29 15:44  Shin  阅读(289)  评论(0编辑  收藏  举报

导航