1. 程式人生 > 程式設計 >C#委託方法Func()中GetInvocationList()方法的用法介紹

C#委託方法Func()中GetInvocationList()方法的用法介紹

在日常使用委託時,有以下常用方法

方法名稱說明
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();
        }

    }

C#委託方法Func()中GetInvocationList()方法的用法介紹

呼叫委託後,只能獲取到最後一個呼叫方法的返回值。

使用 GetInvocationList()

GetInvocationList() 能夠返回 這個委託的方法連結串列。

通過使用迴圈,把每個方法順序呼叫一次,每次迴圈中都會產生當前呼叫方法的返回值。

class Program
{
    public static string a(string str)
    {
        Console.WriteLine("方法a");
  jNNIt      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(); }

C#委託方法Func()中GetInvocationList()方法的用法介紹

相當於把委託裡順序呼叫的方法分離成一個列表,通過迴圈呼叫,迴圈獲取。

以上所述是小編給大家介紹的C#委託方法Func()中GetInvocationList()方法的用法,希望對大家有所幫助。在此也非常感謝大家對我們的支援!