C#委托详解

本文介绍了C#中的委托概念,包括单播和多播委托、匿名方法以及Lambda表达式的使用,展示了它们在方法绑定、事件处理和简洁编程中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C#中委托可以理解为函数指针,它是一种类型安全的函数指针。它可以将一个或多个方法绑定到委托实例中,并使用该委托实例调用这些方法。委托类型的语法如下:

delegate <返回值类型> <委托名称>(<参数列表>);

例如,以下是一个委托类型定义:

delegate int MyDelegate(string str);

这个委托类型可以绑定到一个返回类型为int、参数类型为string的方法。

委托可以用来实现事件、回调函数、多播委托等功能。以下是一些常用的委托用法:

单播委托

单播委托只能绑定一个方法,以下是一个例子:

class Program
{
    delegate void MyDelegate(int num);
    static void Main(string[] args)
    {
        MyDelegate del = new MyDelegate(PrintNumber);
        del(100);
    }

    static void PrintNumber(int num)
    {
        Console.WriteLine(num);
    }
}

输出:

100

多播委托

多播委托可以绑定多个方法,多个方法的执行顺序可由添加方法的顺序决定,以下是一个例子:

class Program
{
    delegate void MyDelegate(int num);
    static void Main(string[] args)
    {
        MyDelegate del = new MyDelegate(PrintNumber1);
        del += PrintNumber2;
        del(100);
    }

    static void PrintNumber1(int num)
    {
        Console.WriteLine("PrintNumber1: " + num);
    }

    static void PrintNumber2(int num)
    {
        Console.WriteLine("PrintNumber2: " + num);
    }
}

输出:

PrintNumber1: 100
PrintNumber2: 100

注意:多播委托如果绑定的方法有返回值,则只会返回最后一个方法的返回值。

匿名方法

匿名方法是指没有方法名的方法,它可以用来替代委托中的具名方法。以下是一个例子:

class Program
{
    delegate void MyDelegate(int num);
    static void Main(string[] args)
    {
        MyDelegate del = delegate(int num)
        {
            Console.WriteLine(num);
        };
        del(100);
    }
}

输出:

100

Lambda表达式

Lambda表达式是一种简洁的写法,它可以用来替代匿名方法和具名方法。以下是一个例子:

class Program
{
    delegate void MyDelegate(int num);
    static void Main(string[] args)
    {
        MyDelegate del = (int num) => Console.WriteLine(num);
        del(100);
    }
}

输出:

100

Lambda表达式的语法很简单,它由参数列表、箭头符号和方法体组成。箭头符号左边是参数列表,右边是方法体,可以省略参数类型和括号。Lambda表达式可以用来表示任何委托类型,只需要满足参数列表和返回类型的要求即可。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BlazorComponent

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值