網站首頁 編程語言 正文
在日常使用委托時,有以下常用方法
方法名稱 | 說明 |
---|---|
?Clone | ? 創建委托的淺表副本。 |
?GetInvocationList | ? 按照調用順序返回此多路廣播委托的調用列表。 |
?GetMethodImpl | ??返回由當前的 MulticastDelegate 表示的靜態方法。 |
?GetObjectData | ? 用序列化該實例所需的所有數據填充?SerializationInfo?對象。 |
?MemberwiseClone | ? 創建當前?Object?的淺表副本。 |
?RemoveImpl | ? 調用列表中移除與指定委托相等的元素 |
GetInvocationList() 的用途
當委托有多個返回值時
當你編寫一個 delegate委托 或 Func<>泛型委托 ,并為實例綁定多個方法時,每個方法都有一個返回值。可能會遇到這種情況:
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("測試")); Console.ReadKey(); } }
調用委托后,只能獲取到最后一個調用方法的返回值。
使用 GetInvocationList()
GetInvocationList() 能夠返回 這個委托的方法鏈表。
通過使用循環,把每個方法順序調用一次,每次循環中都會產生當前調用方法的返回值。
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("測試")); } Console.ReadKey(); }
相當于把委托里順序調用的方法分離成一個列表,通過循環調用,循環獲取。
原文鏈接:https://www.cnblogs.com/whuanle/p/10035549.html
相關推薦
- 2022-03-07 c語言實現學生管理系統詳解_C 語言
- 2022-04-12 C#實現六大設計原則之里氏替換原則_C#教程
- 2022-04-11 python中pip安裝、升級以及升級固定的包_python
- 2022-06-01 C++構造函數的類型,淺拷貝與深拷貝詳解_C 語言
- 2022-10-07 C語言順序查找算法介紹及示例_C 語言
- 2022-07-30 centos 創建python虛擬環境遇到的問題及解決方法
- 2022-08-30 MongoDB集合中的文檔管理_MongoDB
- 2022-12-12 C語言解讀數組循環右移問題_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支