一、action和func委託
除了上篇描述的為每個引數和返回型別定義乙個新委託型別之外,還可以使用action和func委託。通過t的標示,我們可以知道這是兩個泛型委託。
二、action
其中action委託表示引用乙個void返回型別的方法。這個委託存在不同的變體,可以傳遞最多16種不同的引數型別。如:action表示呼叫帶乙個引數的方法(返回型別為void),action表示兩個引數,action表示16個引數(最多16個);在這就以上篇中資料操作類,加以改造:
public class mathoperation
", result);
}public static void reduce(int x, int y)
", result);
}public static void process(actionaction, int x, int y)
}
執行**:
action operation = ;
for (int i = 0; i < operation.length; i++)
個委託方法", i);
for (int j = 1; j < 10; j++)
}
輸出結果:
三、func
func呼叫帶返回型別的方法。與action類似,func也定義了不同的變體,至多可以16個引數型別和乙個返回型別。func委託型別可以呼叫帶返回型別且無參的方法,func表示帶有乙個引數的方法。我們繼續在資料操作類上改造:
public class mathoperation
public static int reduce(int x, int y)
public static void process(funcaction, int x, int y)
", result);}}
執行**:
func operation = ;
for (int i = 0; i < operation.length; i++)
個委託方法", i);
for (int j = 1; j < 10; j++)
}
執行結果:
四、員工工資排序例項
首先定義乙個員工類
public class empolyee
/// /// 工資
///
public decimal salary
public empolyee(string name, decimal salary)
/// /// 重構
///
///
public override string tostring()
的工資為:", name, salary);
}/// /// 定義乙個比較員工工資的靜態方法(用於向通用排序類傳值)
///
///
///
///
public static bool compareto(empolyee e1, empolyee e2)
}
然後建立乙個排序類:
public class sortutil
// }
//}bool result = true;do}
}while (result);}}
執行**:
empolyee list = ;
sortutil.sort(list, empolyee.compareto);
foreach (var item in list)
執行結果:
c 中Action和Func委託
泛型acion委託表示引用乙個void返回型別的方法,至多可以傳遞至16個引數型別,沒有泛型的action類可呼叫沒有引數的方法,如 class test static void main string args 泛型func委託表示引用帶返回型別的方法,至多可以傳遞16個引數型別和乙個返回型別,f...
C 委託變數Action和Func
c 中的委託 簡單來說,使用委託可以將多個方法繫結到同乙個委託變數,當呼叫此變數時,可以依次呼叫所有方法。action委託 1.action a printstring action可以指向乙個沒有返回值,也沒有引數的方法。actiona printstring action 還可以接受沒有返回值,...
C 委託型別Action和Func
簡述 action和func就是泛型委託,作用就是可以為我們省去定義委託的步驟。1.action為返回型別為void且無參的委託 等價於delegate void 委託名 使用方式 static void dofirstwork 在工作 task.currentid action t1 new ac...