C 委託之Action和Func

2021-08-22 16:19:41 字數 2144 閱讀 6360

一、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...