实现IComparable接口,需要实现CompareTo方法,该方法在MSDN中定义如下:
Compares the current instance with another object of the same type.
(比较当前实例和另一个相同类型的对象)
Namespace: System
Assembly: mscorlib (in mscorlib.dll)
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
示例代码如下:
1
using
System;
2
3
namespace
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时会出现一个错误!

2

3

4



5

6



7

8



9

10

11

12

13

14

15



16

17



18

19

20

21

22

23



24

25

26

27

28

29

30

31

32

33

34



35

36



37



38

39

40

41

42

43

44
