委託:
/// /// 無引數無返回值委託
///
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 ...