日韩欧美人妻无码精品白浆,www.大香蕉久久网,狠狠的日狠狠的操,日本好好热在线观看

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C# 里 7 個(gè)創(chuàng)建委托的方法

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

前言

嗨,大家好!

委托是一種強(qiáng)大的工具,可以讓你將方法作為參數(shù)傳遞。

在 C# 中,創(chuàng)建委托有多種方法,每種方法都有其特點(diǎn)和適用場(chǎng)景。

我總結(jié)了 7 個(gè)創(chuàng)建委托的方法,看看有沒(méi)有你不知道的方法?

1. 使用 delegate 關(guān)鍵字

這是最基本的創(chuàng)建委托的方法,通過(guò) delegate 關(guān)鍵字定義一個(gè)委托類型

using System;

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

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

        // 調(diào)用委托
        myDelegate();
    }

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

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

2. 使用 Func 泛型委托

C# 提供了內(nèi)置的泛型委托 Func 委托,它可以簡(jiǎn)化創(chuàng)建能夠返回值的方法委托

using System;

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

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

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

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

3. 使用 Action 泛型委托

C# 提供了內(nèi)置的泛型委托 Action 委托,它可以簡(jiǎn)化創(chuàng)建不返回任何值的方法委托

using System;

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

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

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

和 Func 委托一樣,Action 委托也可以接受最多16個(gè)參數(shù)

4. 使用匿名方法

匿名方法允許你在定義委托時(shí)直接編寫方法體,而不需要單獨(dú)定義一個(gè)方法。

示例

using System;

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

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

        // 調(diào)用委托
        myDelegate();
    }
}

5. 使用 Lambda 表達(dá)式

Lambda 表達(dá)式是匿名方法的簡(jiǎn)化形式,語(yǔ)法更簡(jiǎn)潔,使用更方便。

示例

using System;

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

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

6. 使用方法組轉(zhuǎn)換

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

public delegate void MyDelegate(string message);

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

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

7. 多播委托

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

在創(chuàng)建多播委托時(shí),通過(guò) += 操作符將多個(gè)方法添加到一個(gè)委托中。

public delegate void MyDelegate(string message);

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

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

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

需要注意的是,如果多播委托有返回值,那么返回值將是最后一個(gè)方法的返回值。在應(yīng)用中,建議將多播委托用于void類型的返回值的場(chǎng)景,以避免返回最后一個(gè)方法的結(jié)果。

總結(jié)

通過(guò)上述幾種方法,你可以靈活地創(chuàng)建和使用委托。

  • delegate 關(guān)鍵字:適用于需要自定義委托類型的情況。
  • Func 和 Action 泛型委托:適用于標(biāo)準(zhǔn)的委托需求,語(yǔ)法簡(jiǎn)潔。
  • 匿名方法:適用于簡(jiǎn)單的、一次性的委托。
  • Lambda 表達(dá)式:語(yǔ)法簡(jiǎn)潔,適用于簡(jiǎn)單的委托。
  • 方法組轉(zhuǎn)換:適用于直接將方法賦值給委托的情況。
  • 多播委托:適用于需要依次調(diào)用多個(gè)方法的情況,比如在 WinForms 中單擊按鈕處理多個(gè)任務(wù)。

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

九九色婷婷久久99| 久久一区二区小说| 啊啊啊好大好爽淫荡av| 欧美日韩囯产高清一区久久| 亚洲、欧美、日韩、国产| 欧美3p一区| 欧产一区二| 在线观看黄色福利视频| AV中文字幕在线三区| 美女亚洲高潮在线| 黄色日本理论在线| 一级片大鸡巴| 久久精品国产A三级三| 一区二区三区欧美在线播放 | 国产女人十八毛片A级毛片久久精品| 欧美专区第74页| 日本伊人一区二区| 国产快射www| 亚洲日韩精品伦理一区 | 国产成人精品曰本亚洲| 夜夜夜夜夜夜欧美日本国产 | 久久伊人国际视频| 综合日韩国产欧美| 中字幕无线码中文字淫| 国产精品视频深喉口爆吞精3p| 蜜桃密乳密芽AV| 性爱精品综合| 91精品禁| 久久 人妻 白丝 白虎| 国产蜜臀网站| 91中文字幕国产| 亚洲精品资源福利网站| 乱小说视频在线观看免费| 久久精品淫乱视频| 国产精品高潮免费视频久久| 成人性在线| 免费日韩伦理AV| 香蕉在线超碰| 中日韩内射视频| 麻豆传媒乱乱一区二区三区| 欧美国产成人在线观看免费网站撸 |