溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

IComparable類型排序接口

發(fā)布時(shí)間:2020-08-06 15:58:07 來(lái)源:網(wǎng)絡(luò) 閱讀:387 作者:刺激樂(lè)天派 欄目:編程語(yǔ)言

// 摘要: 

    //     定義一種特定于類型的通用比較方法,值類型或類通過(guò)實(shí)現(xiàn)此方法對(duì)其實(shí)例進(jìn)行排序。

    [ComVisible(true)]

    public interface IComparable

    {

        // 摘要: 

        //     將當(dāng)前實(shí)例與同一類型的另一個(gè)對(duì)象進(jìn)行比較,并返回一個(gè)整數(shù),該整數(shù)指示當(dāng)前實(shí)

                //例在排序順序中的位置是位于另一個(gè)對(duì)象之前、之后還是與其位置相同。

        //

        // 參數(shù): 

        //   obj:

        //     與此實(shí)例進(jìn)行比較的對(duì)象。

        //

        // 返回結(jié)果: 

        //     一個(gè)值,指示要比較的對(duì)象的相對(duì)順序。返回值的含義如下:值含義小于零此實(shí)例小于             //obj。零此實(shí)例等于 obj。大于零此實(shí)例大于 obj。

        //

        // 異常: 

        //   System.ArgumentException:

        //     obj 不具有與此實(shí)例相同的類型。

        int CompareTo(object obj);

    }

備注:


    此接口由具有可排序值的類型實(shí)現(xiàn)。 它要求實(shí)現(xiàn)類型定義單個(gè)方法 CompareTo(Object),該方法指示當(dāng)前實(shí)例在排序順序中的位置是位于同一類型的另一個(gè)對(duì)象之前、之后還是與其位置相同。 實(shí)例的 IComparable 實(shí)現(xiàn)由 Array.Sort 和 ArrayList.Sort 等方法自動(dòng)調(diào)用。CompareTo(Object) 方法的實(shí)現(xiàn)必須返回有三個(gè)值之一的 Int32,如下表中所示。


示例代碼:(來(lái)自官方開(kāi)發(fā)文檔)

using System;
using System.Collections;
public class Temperature : IComparable 
{    // The temperature value
    protected double temperatureF;    
    public int CompareTo(object obj) {        
        if (obj == null) return 1;
        Temperature otherTemperature = obj as Temperature;        
        if (otherTemperature != null) 
            return this.temperatureF.CompareTo(otherTemperature.temperatureF);        
        else
           throw new ArgumentException("Object is not a Temperature");
    }    
    public double Fahrenheit 
    {        
        get 
        {            
            return this.temperatureF;
        }        
        set 
        {            
            this.temperatureF = value;
        }
    }    
    public double Celsius 
    {        
        get 
        {            
            return (this.temperatureF - 32) * (5.0/9);
        }        
        set 
        {            
            this.temperatureF = (value * 9.0/5) + 32;
        }
    }
}


public class CompareTemperatures
{   
    public static void Main()
   {
      ArrayList temperatures = new ArrayList();      // Initialize random number generator.
      Random rnd = new Random();      // Generate 10 temperatures between 0 and 100 randomly.
      for (int ctr = 1; ctr <= 10; ctr++)
      {         
         int degrees = rnd.Next(0, 100);
         Temperature temp = new Temperature();
         temp.Fahrenheit = degrees;
         temperatures.Add(temp);   
      }      // Sort ArrayList.
      temperatures.Sort();      
      foreach (Temperature temp in temperatures)
         Console.WriteLine(temp.Fahrenheit);

   }
}
// The example displays the following output to the console (individual
// values may vary because they are randomly generated):
//       2
//       7
//       16
//       17
//       31
//       37
//       58
//       66
//       72
//       95


若疑問(wèn)可參看官方的開(kāi)發(fā)者文檔!


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI