// 摘要:

// 定义一种特定于类型的通用比较方法,值类型或类通过实现此方法对其实例进行排序。

[ComVisible(true)]

public interface IComparable

{

// 摘要:

// 将当前实例与同一类型的另一个对象进行比较,并返回一个整数,该整数指示当前实

//例在排序顺序中的位置是位于另一个对象之前、之后还是与其位置相同。

//

// 参数:

// obj:

// 与此实例进行比较的对象。

//

// 返回结果:

// 一个值,指示要比较的对象的相对顺序。返回值的含义如下:值含义小于零此实例小于 //obj。零此实例等于 obj。大于零此实例大于 obj。

//

// 异常:

// System.ArgumentException:

// obj 不具有与此实例相同的类型。

int CompareTo(object obj);

}

备注:


此接口由具有可排序值的类型实现。它要求实现类型定义单个方法CompareTo(Object),该方法指示当前实例在排序顺序中的位置是位于同一类型的另一个对象之前、之后还是与其位置相同。实例的IComparable实现由Array.Sort和ArrayList.Sort等方法自动调用。CompareTo(Object)方法的实现必须返回有三个值之一的Int32,如下表中所示。


示例代码:(来自官方开发文档)

usingSystem;usingSystem.Collections;publicclassTemperature:IComparable{//ThetemperaturevalueprotecteddoubletemperatureF;publicintCompareTo(objectobj){if(obj==null)return1;TemperatureotherTemperature=objasTemperature;if(otherTemperature!=null)returnthis.temperatureF.CompareTo(otherTemperature.temperatureF);elsethrownewArgumentException("ObjectisnotaTemperature");}publicdoubleFahrenheit{get{returnthis.temperatureF;}set{this.temperatureF=value;}}publicdoubleCelsius{get{return(this.temperatureF-32)*(5.0/9);}set{this.temperatureF=(value*9.0/5)+32;}}}publicclassCompareTemperatures{publicstaticvoidMain(){ArrayListtemperatures=newArrayList();//Initializerandomnumbergenerator.Randomrnd=newRandom();//Generate10temperaturesbetween0and100randomly.for(intctr=1;ctr<=10;ctr++){intdegrees=rnd.Next(0,100);Temperaturetemp=newTemperature();temp.Fahrenheit=degrees;temperatures.Add(temp);}//SortArrayList.temperatures.Sort();foreach(Temperaturetempintemperatures)Console.WriteLine(temp.Fahrenheit);}}//Theexampledisplaysthefollowingoutputtotheconsole(individual//valuesmayvarybecausetheyarerandomlygenerated)://2//7//16//17//31//37//58//66//72//95


若疑问可参看官方的开发者文档!