標籤:container rri sharp write 委託方 code 實體類 order index
委託的實現,就是編譯器自行定義了一個類:有三個重要參數1.制定操作對象,2.指定委託方法3.委託鏈
看如下一個列子:
12345678910111213141516171819202122 |
class DelegatePratice { public static void Sort<T>(IList<T> sortArray, Func<T, T, bool > Comparison) { bool swapped = true ; do { swapped= false ; for ( int i = 0; i < sortArray.Count - 1; i++) { if (Comparison(sortArray[i], sortArray[i + 1])) { T temp = sortArray[i]; sortArray[i] = sortArray[i + 1]; sortArray[i + 1] = temp; swapped = true ; } } } while (swapped); } }<br><br>定義實體類: |
12345678910111213141516171819202122232425262728293031323334353637 |
class Employee { public Employee( string name, decimal salary) { this .Name = name; this .Salary = salary; } public string Name { get ; set ; } public decimal Salary { get ; set ; } /// <summary> /// 重寫object的ToString方法 /// </summary> /// <returns></returns> public override string ToString() { return string .Format( "{0},{1:C}" ,Name,Salary); } /// <summary> /// 比較兩員工的工資以此排序 /// </summary> /// <param name="e1"></param> /// <param name="e2"></param> /// <returns></returns> public static bool Comparison(Employee e1, Employee e2) { return e1.Salary > e2.Salary; } }<br><br> |
調用
123456789101112131415 |
class Program { static void Main( string [] args) { Employee[] employees = { new Employee( "simen" , 5500), new Employee( "shelly" , 5900), new Employee( "pool" , 4300), new Employee( "renata" , 3800) }; DelegatePratice.Sort(employees, Employee.Comparison); foreach (Employee employee in employees) { Console.WriteLine(employee); } Console.ReadKey(); } } } |
C#委託冒泡