網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
在日常使用委托時(shí),有以下常用方法
方法名稱(chēng) | 說(shuō)明 |
---|---|
?Clone | ? 創(chuàng)建委托的淺表副本。 |
?GetInvocationList | ? 按照調(diào)用順序返回此多路廣播委托的調(diào)用列表。 |
?GetMethodImpl | ??返回由當(dāng)前的 MulticastDelegate 表示的靜態(tài)方法。 |
?GetObjectData | ? 用序列化該實(shí)例所需的所有數(shù)據(jù)填充?SerializationInfo?對(duì)象。 |
?MemberwiseClone | ? 創(chuàng)建當(dāng)前?Object?的淺表副本。 |
?RemoveImpl | ? 調(diào)用列表中移除與指定委托相等的元素 |
GetInvocationList() 的用途
當(dāng)委托有多個(gè)返回值時(shí)
當(dāng)你編寫(xiě)一個(gè) delegate委托 或 Func<>泛型委托 ,并為實(shí)例綁定多個(gè)方法時(shí),每個(gè)方法都有一個(gè)返回值??赡軙?huì)遇到這種情況:
class Program { public static string a(string str) { Console.WriteLine("方法a"); return str+"方法a"; } public static string b(string str) { Console.WriteLine("方法b"); return str + "方法b"; } public static string c(string str) { Console.WriteLine("方法c"); return str + "方法c"; } static void Main(string[] args) { Func<string, string> func=a; func += b; func += c; Console.WriteLine(func("測(cè)試")); Console.ReadKey(); } }
調(diào)用委托后,只能獲取到最后一個(gè)調(diào)用方法的返回值。
使用 GetInvocationList()
GetInvocationList() 能夠返回 這個(gè)委托的方法鏈表。
通過(guò)使用循環(huán),把每個(gè)方法順序調(diào)用一次,每次循環(huán)中都會(huì)產(chǎn)生當(dāng)前調(diào)用方法的返回值。
class Program { public static string a(string str) { Console.WriteLine("方法a"); return str+"方法a"; } public static string b(string str) { Console.WriteLine("方法b"); return str + "方法b"; } public static string c(string str) { Console.WriteLine("方法c"); return str + "方法c"; } static void Main(string[] args) { Func<string, string> func=a; func += b; func += c; var funclist = func.GetInvocationList(); foreach (Func<string, string> f in funclist) { Console.WriteLine(f("測(cè)試")); } Console.ReadKey(); }
相當(dāng)于把委托里順序調(diào)用的方法分離成一個(gè)列表,通過(guò)循環(huán)調(diào)用,循環(huán)獲取。
原文鏈接:https://www.cnblogs.com/whuanle/p/10035549.html
相關(guān)推薦
- 2022-05-06 Python學(xué)習(xí)之模塊化程序設(shè)計(jì)示例詳解_python
- 2022-07-03 Android利用貝塞爾曲線(xiàn)繪制動(dòng)畫(huà)的示例代碼_Android
- 2022-05-20 Spring注入bean的常用的六種方式
- 2022-09-30 GO中sync包自由控制并發(fā)示例詳解_Golang
- 2022-07-13 deepin 桌面版設(shè)置華為、阿里倉(cāng)庫(kù)源
- 2022-01-27 插入數(shù)據(jù)庫(kù)某個(gè)字段之前判斷是否重復(fù)
- 2022-05-25 詳解C++類(lèi)的成員函數(shù)做友元產(chǎn)生的循環(huán)依賴(lài)問(wèn)題_C 語(yǔ)言
- 2022-09-16 Go語(yǔ)言入門(mén)學(xué)習(xí)之Channel通道詳解_Golang
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支