委托

委托是C#中的一大特色。
委托从字面上理解就是一种代理,类似于房屋中介,由租房人委托中介为其租赁房屋。
在 C# 语言中,委托则委托某个方法来实现具体的功能。
委托是一种引用类型,虽然在定义委托时与方法有些相似,但不能将其称为方法。
委托在使用时遵循三步走的原则,即定义声明委托、实例化委托以及调用委托。

一、命名方法委托

声明:

修饰符 delegate 返回值类型 委托名(参数列表);
如:public delegate void Mydele(int a); 

实例化:

和对象的实例化差不多
如:Mydele my=new Mydele(方法名,如果是静态方法直接引用;非静态方法需通过对象引用);
Mydele my = new Mydele(new Program().Sayhello);


public void Sayhello(int a) {
            Console.WriteLine("hello delegate {0}",a);
        }

调用 :

my(4);
//需要根据参数列表来传参

二、多播委托

多播委托是指在一个委托中注册多个方法,在注册方法时可以在委托中使用加号运算符或者减号运算符来实现添加或撤销方法。
举例:

class Program
    {
        public delegate void Mydele();
           
        static void Main(string[] args)
        {
            Mydele my = new Mydele(new Program().Sayhello);
            my += new Program().Sayhello2;
            my += new Program().Sayhello3;

            my();

        }
       
        public void Sayhello() {
            Console.WriteLine("hello delegate 1 ");
        }
        public void Sayhello2()
        {
            Console.WriteLine("hello delegate 2");
        }
        public void Sayhello3()
        {
            Console.WriteLine("hello delegate 3 ");
        }
        
    }

三、匿名委托

匿名委托是指使用匿名方法注册在委托上
首先也需要定义委托

修饰符  delegate  返回值类型  委托名 ( 参数列表 );

然后定义匿名委托

委托名  委托对象 = delegate
{
    //代码块
};

最后调用委托

委托对象(参数列表);

举例:

 public delegate void Mydele();
           
        static void Main(string[] args)
        {
            Mydele my = delegate
            {
                Console.WriteLine("hello delegate 4");
            };
           
            my();

        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值