c#委托声明实例化与调用

系统访问数据或调用方法有两种操作方式:一种是通过名称访问或调用,另一种是通过所在的内存地址来访问调用。为了系统的安全与稳定,NET FrameworkCLR库不允许程序通过指针来直接操作内存中数据或方法,而是通过托管机制来访问内存中数据或调用内存中的方法。委托就是C#提供的一种以托管机制调用方法的特殊数据类型,其作用于房屋租凭中介机构类似。
 
下面我们主要围绕以下三点
 
    //1.定义委托  
    //2.委托的实例化 
    //3.委托的调用,实际上是将委托指向已经实现的某个方法 
 
    //注意:调用的方法必须返回类型和定义的委托返回类型一致 

 
 
 委托是一个类,它定义了方法的类型,使得可以将方法当做参数进行传递。
 
一:委托的定义
 
C#中使用关键字delegate声明委托。声明委托的一般形式是:
 
//委托的定义  
        // [访问修饰符]  delegate  数据类型  委托名(参数列表....) 
       
      在使用委托前是一定先要定义的

      例如:Delegate void d(int x)

       
      二:实例化( 与方法绑定) 

      为了与命名方法一起使用,委托必须用具有可接受签名的方法进行实例化。
       
      实例化的方法可用下列方法各项之一
       
      • “委托创建表达式”中引用的静态方法,或者
      • “委托创建表达式”中引用的目标对象(此对象不能为 null)和实例方法
      •  另一个委托
       
      例如:
       
      Delegate void d(int x)
       
       
      delegate void D(int x);
      class C
      {
         public static void M1(int i) {...}
         public void M2(int i) {...}
      }
      class Test
      {
         static void Main() {
            D cd1 = new D(C.M1);      // static method
            Test t = new C();
            D cd2 = new D(t.M2);      // instance method
            D cd3 = new D(cd2);      // another delegate
         }
      }


       
      .委托调用

       
      创建委托对象后,通常将委托对象传递给将调用该委托的其他代码。通过委托对象的名称(后面跟着要传递给委托的参数,括在括号内)调用委托对象。下面是委托调用的示例:
       
      public delegate int MathOp(int i,int j);//定义委托 
          class DelegateTest 
          { 
              public static int  add(int i, int j) {//方法 
                  return i + j; 
              } 
              public static int Mutiply(int num1, int num2) {//方法 
       
                  return num1 * num2; 
               
              } 
       
       
              static void Main(string[] args) 
              { 
                  MathOp mo = new MathOp(add);//委托的实例化,指向add方法 
                  MathOp maOp = new MathOp(Mutiply);//委托的实例化,指向Mutiply方法 
       
                  Console.WriteLine(mo(10, 20));//委托的调用 
                  Console.WriteLine(maOp(4, 5));//委托的调用 
       
                  Console.ReadLine(); 
              } 
          } 
       
        
      } 


      认识:

      以前对委托的认识只是知道委托是方法的调用。通过这次的项目实例了解到委托也是需要定义,实例化与调用的。还是先前学艺不精占呀。委托的使用通常与匿名函数或lambda表达式匹配使用,下篇介绍匿名函数
       
      • 4
        点赞
      • 12
        收藏
        觉得还不错? 一键收藏
      • 29
        评论
      评论 29
      添加红包

      请填写红包祝福语或标题

      红包个数最小为10个

      红包金额最低5元

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

      抵扣说明:

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

      余额充值