初探委托

目录

前言

虽然学习C#有段时间了,可一直没怎么接触委托,在学习多线程的时候,看到了很多委托的例子,有点不太理解,故查阅资料学习,特此整理成文。

1.委托是什么?

个人认为,委托可以从下面两个方面来理解:

(1) 从类型来讲,委托是和结构体、类一样是一种用户自定义类型。

(2) 从内容上来讲,委托(类)提供了方法(对象)的抽象。

既然委托是一种类型,那么它存储的是什么数据?

我们知道,委托是方法的抽象,它存储的就是一系列具有相同签名和返回回类型的方法的地址。

调用委托的时候,委托包含的所有方法将被执行。

2.下面以一个列子来讲解如何使用委托和委托的特性

2.1定义委托

      //定义了一个委托
      delegate void MyDel(int x);

2.2定义相同签名和返回回类型的方法

public  class Temp
   {
       public static void MyDel789(int x)
       {
           Console.WriteLine("Temp:"+x + 789);
       }

   }

 public  class test
    {

       public void MyDel456(int x)
       {
           Console.WriteLine("test:" + x + 456);
       }
   }
   public class TestDelegate
       {
           public static void MyDel123(int x){
               Console.WriteLine("TestDelegate:" + x + 123);
           }

       }

2.3 定义委托

          //声明变量,  初始化(两种方法)
          MyDel del123 = new MyDel(TestDelegate.MyDel123);
          MyDel del456 = new test().MyDel456;

2.4调用委托

          //委托调用
          del123(0);
          del456(0);

2.5组合委托


          //委托组合
          MyDel delSum = del123 + del456;
          Console.WriteLine("SUM:");
          delSum(0);
          MyDel del789 = new MyDel(Temp.MyDel789);

2.6 “加减”委托

个人认为:可以将委托看做是能够装载指定格式的方法的集合


          //委托加减运算
          delSum += del789;
          delSum -= del123;
          Console.WriteLine("SUM:");
          delSum(0);

2.7 匿名委托及其变形

          // 匿名方法
          MyDel del = delegate(int x)
          {
              Console.WriteLine(x);
          };//匿名方法


          //Lambda表达式
          MyDel del2 = (int x) =>
          {
              Console.WriteLine(x * x);

          };//Lambda表达式
          MyDel del3 = x =>
          {
              Console.WriteLine(x * 3);
          };//简写的Lambda表达式
          del(1);
          del2(2);
          del3(3);

欢迎交流


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值