狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C# 里 7 個創建委托的方法

admin
2024年11月22日 14:41 本文熱度 841

前言

嗨,大家好!

委托是一種強大的工具,可以讓你將方法作為參數傳遞。

在 C# 中,創建委托有多種方法,每種方法都有其特點和適用場景。

我總結了 7 個創建委托的方法,看看有沒有你不知道的方法?

1. 使用 delegate 關鍵字

這是最基本的創建委托的方法,通過 delegate 關鍵字定義一個委托類型

using System;

// 定義一個委托類型
public delegate void MyDelegate();

class Program
{
    static void Main()
    {
        // 創建委托實例
        MyDelegate myDelegate = new MyDelegate(Method1);
        
        // 添加另一個方法到委托
        myDelegate += Method2;

        // 調用委托
        myDelegate();
    }

    static void Method1()
    {
        Console.WriteLine("Method1 called");
    }

    static void Method2()
    {
        Console.WriteLine("Method2 called");
    }
}

2. 使用 Func 泛型委托

C# 提供了內置的泛型委托 Func 委托,它可以簡化創建能夠返回值的方法委托

using System;

class Program
{
    static void Main()
    {
        // 定義一個 Func 委托,接受兩個 int 參數,返回一個 int
        Func<intintintadd = Add;

        // 調用委托
        int result = add(105);
        Console.WriteLine(result); // 輸出: 15
    }

    static int Add(int a, int b)
    {
        return a + b;
    }
}

Func 委托可以接受最多16個參數,最后一個類型參數是方法的返回值。

3. 使用 Action 泛型委托

C# 提供了內置的泛型委托 Action 委托,它可以簡化創建不返回任何值的方法委托

using System;

class Program
{
    static void Main()
    {
        // 定義一個 Action 委托,接受一個 string 參數
        Action<string> greet = Greet;

        // 調用委托
        greet("World"); // 輸出: Hello, World
    }

    static void Greet(string name)
    {
        Console.WriteLine($"Hello, {name}");
    }
}

和 Func 委托一樣,Action 委托也可以接受最多16個參數

4. 使用匿名方法

匿名方法允許你在定義委托時直接編寫方法體,而不需要單獨定義一個方法。

示例

using System;

class Program
{
    static void Main()
    {
        // 定義一個委托類型
        delegate void MyDelegate();

        // 使用匿名方法創建委托實例
        MyDelegate myDelegate = delegate
        {
            Console.WriteLine("Anonymous method called");
        };

        // 調用委托
        myDelegate();
    }
}

5. 使用 Lambda 表達式

Lambda 表達式是匿名方法的簡化形式,語法更簡潔,使用更方便。

示例

using System;

class Program
{
    static void Main()
    {
        // 定義一個 Action 委托,接受一個 string 參數
        Action<string> greet = name => Console.WriteLine($"Hello, {name}");

        // 調用委托
        greet("World"); // 輸出: Hello, World
    }
}

6. 使用方法組轉換

直接將一個符合委托簽名的方法名賦值給委托變量,不需要顯式地使用 new 關鍵字

public delegate void MyDelegate(string message);

public class Program
{
    public static void Main()
    {
        // 直接將方法名賦值給委托
        MyDelegate del = PrintMessage;
        del("你好,通過方法組轉換創建的委托!");
    }

    public static void PrintMessage(string message)
    {
        Console.WriteLine(message);
    }
}

7. 多播委托

多播委托(multicast delegates)是一種特殊的委托類型,允許一個委托引用多個方法,在調用委托時,依次執行所有引用的方法。

在創建多播委托時,通過 += 操作符將多個方法添加到一個委托中。

public delegate void MyDelegate(string message);

public class Program
{
    public static void Main()
    {
        MyDelegate del = PrintMessage;
        del += AnotherMessage; // 添加第二個方法
        del("你好,多播委托!"); // 調用所有注冊的方法
    }

    public static void PrintMessage(string message)
    {
        Console.WriteLine("PrintMessage: " + message);
    }

    public static void AnotherMessage(string message)
    {
        Console.WriteLine("AnotherMessage: " + message);
    }
}

需要注意的是,如果多播委托有返回值,那么返回值將是最后一個方法的返回值。在應用中,建議將多播委托用于void類型的返回值的場景,以避免返回最后一個方法的結果。

總結

通過上述幾種方法,你可以靈活地創建和使用委托。

  • delegate 關鍵字:適用于需要自定義委托類型的情況。
  • Func 和 Action 泛型委托:適用于標準的委托需求,語法簡潔。
  • 匿名方法:適用于簡單的、一次性的委托。
  • Lambda 表達式:語法簡潔,適用于簡單的委托。
  • 方法組轉換:適用于直接將方法賦值給委托的情況。
  • 多播委托:適用于需要依次調用多個方法的情況,比如在 WinForms 中單擊按鈕處理多個任務。

該文章在 2024/11/22 16:01:29 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved