zoukankan      html  css  js  c++  java
  • c#委托实例化和调用语句

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

     
     
     托付是一个类,它定义了方法的类型,使得能够将方法当做參数进行传递。
     
    一:托付的定义
     
    C#中使用keyworddelegate声明托付。声明托付的一般形式是:
     
    //托付的定义  
        // [訪问修饰符]  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表达式匹配使用,下篇介绍匿名函数
     

    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    python,抓取百度搜索结果
    python关键字 with
    python 字符串处理
    采用主动模式进行文件的上传、下载
    系统的备份和恢复
    javascript中的defer
    程序调用批处理完成上传、下载
    vb.net中的ftp上传、拨号、socket通讯的源码
    CF1033G Chip Game
    LG3369 普通平衡树
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4818296.html
Copyright © 2011-2022 走看看