C# 委托

       C# 中的委托类似于 C 或 C++ 中指向函数的指针。委托表示引用某个方法的引用类型变量,运行时可以更改引用对象。
特别地,委托可以用于处理事件或回调函数。并且,所有的委托类都是从 System.Delegate 类继承而来。
      委托是方法的抽象,它存储的就是一系列具有相同签名和返回回类型的方法的地址。调用委托的时候,委托包含的所有方法将被执行。

委托在使用时遵循三步走的原则,即定义声明委托、实例化委托、以及调用委托。如下例:

namespace TEST
{
    //class Program
    //{
    //    static void Main(string[] args)
    //    {
    //    }
    //}
    class Program
    {
        //1:定义声明委托  
        //语法:修饰符 delegate 返回值类型 委托名 ( 参数列表 );
        public delegate void MyDelegate();
        //public delegate void MyDelegate2();

        static void Main(string[] args)
        {
            //2:实例化委托---给委托绑定方法。因为委托是一个类,所以用new关键字来创建委托的实例
            //语法:委托名 委托对象名 = new 委托名 ( 方法名 );
            MyDelegate myDelegate1 = new MyDelegate(Test.SayHello);//若使用静态方法,在向委托中传递方法名时只需要用 “类名.方法名” 的形式。
            MyDelegate myDelegate2 = new MyDelegate(new Test().SayGoodbye);//若使用实例方法,在向委托中传递方法名时要使用 “new 类名().方法名” 的形式。

            //3:调用委托---触发委托绑定的方法。
            //语法:委托对象名 ( 参数列表 );
            myDelegate1();
            myDelegate2();//参数列表中传递的参数 必须与委托定义的参数列表相同。

            Console.ReadKey();
        }
    }
    class Test
    {
        public static void SayHello()
        {
            Console.WriteLine("Hello Delegate1"); //调用委托时,委托中的方法会被执行。
        }
        public void SayGoodbye()
        {
            Console.WriteLine("Goodbye Delegate2");
        }
    }
}

//执行顺序:main函数开始-->实例化委托--->调用委托--->执行委托中的方法--->返回调用委托处,继续往下执行
//执行结果为:
Hello Delegate1
Goodbye Delegate2

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值