c 委託 與多播委託delegate

2021-08-04 06:47:35 字數 1187 閱讀 2119

委託又叫匿名函式, 首先我們來說為什麼要使用委託 ,委託到底是什麼   舉乙個例子

我想求煉表裡少於10的數的和,(getsum)

static int  getsum(listlist)

}return sum;

}我又想求煉表裡所有奇數的和,那麼是否是又要寫乙個函式getsum2()來求呢

static int  getsum2(listlist)

}return sum;

}到此大家有沒有覺得很繁瑣   如果要是 將n<10   n%2!=0封裝成引數多好,這樣就只用寫乙個函式就通過改變引數就可以實現 求不同元素標準的和了     委託就是為了實現這樣乙個目的 實現這樣的形式

getsum(listlist function function)

}return sum;

}舉乙個具體的例子

//定義委託

delegate bool function(int i);

//少於10的函式的委託

static function smallerthan10 = delegate (int i) ;

//求偶數的函式委託

static function oushu=delegate(int i);

static int  getsum(listlist,function function)

}return sum;

}這樣求解集合list中小於10的元素的和 就變成下面這樣

var list = new list() ;

//實現了函式的封裝了吧

int sun=getsum(list,smallerthan10);

求元素是奇數的和 就變成下面這樣

int sum = getsum(list,oushu);

實現了函式的引數封裝   太棒啦

action是乙個 有引數無返回值的委託型別

static actionall;

//i表示引數 

static actionaddprint = i => ;

static actionprint = delegate (int i) ;

在主函式中這樣寫

all=addprint;

all += print;

all(1);

列印出 2    1

多播委託就是將多個委託加入乙個委託鍊錶

C 委託,委託鏈,多播委託

委託 概念 委託是一種使用者自定義的型別.是一種類.可以把委託看成用來執行方法 函式的乙個東西 形式 delegate 函式返回型別 委託名稱 引數部分 例項化 委託型別 例項化名 new 委託型別 方法名稱 實現 usingsystem usingsystem.collections.generi...

C 多播委託

昨天第一次學到了多播委託,記錄一下最簡單的用法。顧名思義,多播委託就像廣播一樣,由乙個委託例項引用多個方法。通過 和 運算子實現對引用方法的增加和減少。1 static void main string args 211 public static void test1 1215 public st...

C 多播委託

乙個委託呼叫多個方法 例如 action a test1 a test2 增加乙個新方法,按順序執行,只能得到最後乙個方法的值 a test2 減去乙個方法 當a為空時會報錯,如果乙個方法出錯,其餘不會呼叫 取得乙個多播委託的所有方法 getinvocationlist 返回值為delegate 陣...