委託系列05 Action Func

2022-09-20 13:33:16 字數 3235 閱讀 3678

委託:

/// /// 無引數無返回值委託

///

public delegate void noparamnoreturndelegate();

/// /// 有引數無返回值委託

///

///

public delegate void withparamnoreturndelegate(int i);

方法:

/// /// 無引數無返回值方法

///

private void noparamnoreturnfun()

/// /// 有引數無返回值方法

///

///

private void withparamnoreturnfun(int i)

呼叫:

noparamnoreturndelegate noparamnoreturndelegate = new noparamnoreturndelegate(noparamnoreturnfun);

noparamnoreturndelegate.invoke();

withparamnoreturndelegate withparamnoreturndelegate = new withparamnoreturndelegate(withparamnoreturnfun);

withparamnoreturndelegate.invoke(10);

action action = new action(noparamnoreturnfun);

action.invoke();

actionaction1 = new action(withparamnoreturnfun);

action1.invoke(10);

從上圖可以看得出來,下面兩種方式都可以呼叫noreturnnopara方法,效果是一樣的。

showdelegate showdelegate = new showdelegate(noreturnnopara);

showdelegate.invoke();

action action = new action(noreturnnopara);

action.invoke();

委託:

/// /// 無引數有返回值委託

///

///

public delegate int noparamwithreturndelegate();

/// /// 有引數有返回值委託

///

///

///

public delegate int withparamwithreturndelegate(int i);

方法:

/// /// 無引數有返回值方法

///

///

private int noparamwithreturnfun()

/// /// 有引數無返回值方法

///

///

///

private int withparamwithreturnfun(int i)

呼叫:

//無引數有返回值

noparamwithreturndelegate noparamreturndelegate = new noparamwithreturndelegate(noparamwithreturnfun);

noparamreturndelegate.invoke();

//有引數有返回值

withparamwithreturndelegate withparamwithreturndelegate = new withparamwithreturndelegate(withparamwithreturnfun);

withparamwithreturndelegate.invoke(10);

//無引數有返回值func

funcfunc1 = new func(noparamwithreturnfun);

func1.invoke();

//無引數有返回值func

funcfunc2 = new func(withparamwithreturnfun);

func2.invoke(10);

//多個引數的func委託

funcfunc3 = new func(donothingintandstringwithreturn);

func3.invoke(10,"test");

func, datetime, object, int, string, datetime, object, int, string, datetime, object, int, string, datetime, object, int> func4 = null;

從上圖可以看得出來,下面兩種方式都可以呼叫noreturnnopara方法,效果是一樣的。

//無引數有返回值

noparamwithreturndelegate noparamreturndelegate = new noparamwithreturndelegate(noparamwithreturnfun);

noparamreturndelegate.invoke();

//有引數有返回值

withparamwithreturndelegate withparamwithreturndelegate = new withparamwithreturndelegate(withparamwithreturnfun);

withparamwithreturndelegate.invoke(10);

//無引數有返回值func

funcfunc1 = new func(noparamwithreturnfun);

func1.invoke();

//無引數有返回值func

funcfunc2 = new func(withparamwithreturnfun);

func2.invoke(10);

action:

func:

委託系列06 多播委託

多播委託 public class custommulticastdelegation private void donothing int i private void donothingint int i private void donothingintandstring int i,stri...

C 語言 05 委託和事件

a.委託 是一種定義方法簽名的型別,可以與具有相容簽名的任何方法關聯。所謂相容的方法,是指這個方法和委託的方法簽名具有相同的返回型別和引數 i.語法 delegate 方法簽名 1.方法簽名是方法的名字,沒有方法體 ii.使用委託的過程 1.定義委託和委託物件 2.編寫要委託的方法 3.將要委託的方...

Kotlin系列八 委託

委託模式已經證明是實現繼承的乙個很好的替代方式,而 kotlin 可以零樣板 地原生支援它。這是官方對委託的描述,可能比較抽象但當你了解其意義和使用,會發現委託所帶來的方便會讓你愛不釋手,下面我們來開始學習委託吧,首先看乙個官方的例子 inte ce base class baseimpl val ...