對乙個陣列進行排序演算法,使用氣泡排序演算法,**如下:
int sortarray = ;
//氣泡排序
do}
但這僅僅是對int型資料進行排序。
如果還需要對其他自定義型別的資料進行排序,那麼上述**中的if(sortarray[i]
>sortarray[i+1])就有問題了,因為它需要比較陣列中的兩個物件,看哪個更大。對int 可以這樣比較,但是如何對沒有實現」<」運算子的新類進行比較呢?
這時,便可以使用委託,在委託中傳遞乙個封裝的方法,這個方法可以進行比較,另外,不給變數temp使用int型別,而是使用泛型。
對於接受型別t的泛型方法sort(),需要乙個比較方法,其兩個引數的型別是t,if比較的返回方法是布林型別。這個方法可以從func委託中引用,其中,t1,t2型別相同:func。
給sort方法指定下列簽名:
static public void sort(ilistsortarray,funccomparison)
定義bubblesorter類,如下:
class bubblesorter}}
}
為了使用這個類,我們定義另乙個類,從而建立排序陣列。
class employee
public string name
public decimal salary
public override string tostring()
,",name,salary);
}public static bool comparesalary(employee e1,employee e2)
}
為了匹配func,這個類必須定義comparesalary,它的引數必須是兩個employee引用,並返回乙個布林值。
下列是主函式**:
class program
;bubblesorter.sort(employees,employee.comparesalary);
foreach(employee eein employees)
}}
執行這段**,可得到如下結果:
c,¥500.00
a,¥300.00
b,¥200.00
e,¥200.00
d,¥100.00
當排序型別為int型時,**如下:
class program
;bubblesorter.sort(ar,comparesalary);
foreach(int eein ar)
}public static bool comparesalary(int e1,int e2)
}
C 委託 怎樣理解C 中「委託」的含義和用途
下面是的回答 我是這樣理解的 委託是對方法的引用,相當於方法的別名,也就是說委託與方法具有相同的行為。委託變數說白了就是接受方法名作為引數的變數,當我們使用這個委託變數的時候就相當於呼叫了這個方法。我也感覺 委託 就是方法別名,或者呼叫別人的方法時,不用原來的方法名,可以自己起乙個有意義的名字 聯想...
手機的用途
除了打 以外,你的手機還能做4件事情,你以前不一定知道一些緊急情況下的自救 辦法原來手機還有這樣的用途!尤其是第三種 除了打 以外,你的手機還能做4件事情,你以前不一定知道 我們可能或多或少的知道一些緊急情況下的自救辦法,但你可能不知道你的手 機在緊要關頭也能救你一命。看看下面的內容了解下你的手機能...
手機的用途
除了打 以外,你的手機還能做4件事情,你以前不一定知道一些緊急情況下的自救 辦法原來手機還有這樣的用途!尤其是第三種 除了打 以外,你的手機還能做4件事情,你以前不一定知道 我們可能或多或少的知道一些緊急情況下的自救辦法,但你可能不知道你的手 機在緊要關頭也能救你一命。看看下面的內容了解下你的手機能...