委托
委托是一個類,它定義了方法的類型,使得方法可以當做另一種方法的參數傳遞,就是方法的參數是一個委托變量,在調用此方法時,就可以把一個方法作為參數傳遞給委托變量。
1.創建委托訪問修飾符 delegate 返回值類型 委托名(參數列表); 沒有大括號
2.委托賦值 委托名 委托變量 = 方法名; 沒有大小括號這個方法的參數和返回值類型 必須要和委托類型一致。
3.使用委托委托變量(參數列表);靜態方法和普通方法都可以綁定
4.多播委托給委托綁定多個方法(方法類型必須一致)? 使用 += 解除使用? -=委托名 委托變量 = 方法1;委托變量 += 方法2;使用多播委托綁定無返回值的方法時,會把綁定的方法都執行一次。使用多播委托綁定有返回值的方法是,也會將方法都執行一次,但是會覆蓋第一個方法執行的結果,返回最后綁定方法的結果。
5.內置委托Action無返回值的委托 表示委托類型的參數類型是 T,T1....Func有返回值的委托 表示委托類型的參數類型是 T,T1,T2... 返回值類型是P
6.ref out 關鍵字
這些不能用在內置委托中,必須放在自定義的一般委托中
7.匿名方法
委托類型 委托變量 = delegate(參數列表){ 方法體; 有返回值要return; };
后面一定要加分號,因為這是一個賦值語句
8.Lambda表達式
委托類型 委托變量 = (參數列表)=> { 方法體; 有返回值要return; };
后面一定要加分號,因為這是一個賦值語句
事件
在創建委托變量的時候用event修飾 那么就是一個事件
委托與事件的區別:
委托可以聲明為類成員 也可以是局部變量
事件只能是類成員
事件在類的外部訪問時只能出現在 += 注冊 或者 - =注銷的左邊 不能像使用委托那樣直接執行
事件必須在所在的類里面才可以執行