zoukankan      html  css  js  c++  java
  • C#委托初学

    1、什么是委托

      委托可以认为是包含具有相同签名和返回值类型的有序方法的对象。

    2、声明委托类型

      委托是类型,和类一样,委托类型必须在被用来创建变量以及类型的对象之前声明。

      委托中所包含的方法必须与声明委托的返回值类型、签名相同。

         例:delegate void HelloWord(string name);

      委托类型声明与方法有两个不同:1以关键字delegate开头,没有方法主体“;”代替。

    3、创建委托对象

        委托是引用类型,因此有引用和对象。在委托类型声明之后,可以声明变量并创建类型的对象。

        委托类型名    变量        方法

        HelloWord chinese = Chinese;

        HelloWord chinese = new HelloWord(Chinese);

        方法可以使实例方法或静态方法都可以。

        Program pro = new Program();

        HelloWord english = pro.English;

    4、赋值委托

        由于委托是引用类型,我们可以通过赋值来改变包含在委托变量中的引用。

        例:HelloWord chinese = Chinese;

             HelloWord chinese = Chinese2;//上一个委托会被销毁

    5、组合委托

        委托可以使用运算符来组合创建新的委托。

        HelloWord ChineseAndEnglish = chinese + english;

    6、委托增加方法

      HelloWord chinese += pro.English;

         增加方法实际上是生成了一个新的委托,其调用列表是左边的委托加上右边的方法的组合。

      方法是加在调用方法列表的最底部。

    7、委托移除方法

      HelloWord chinese -= pro.English;

      和增加方法一样也是生成了一个新的委托,新的委托是旧的委托的副本,只是没有了被移除方法的引用。

         移除委托的注意事项:

        -=运算符从列表最后开始搜索并移除一个匹配的方法;

        试图删除不存在方法没有效果;

        试图删除空委托会抛出异常;

        可以把委托和null比较判断委托的调用列表是否为空,为空则为null;

    8、调用委托

      用于调用委托的参数会被调用与列表的每一个方法(除非有一个参数是输出参数)

      一个方法可以在列表中出现多次,每次调用到方法时都会被调用一次。

        delegate void HelloWord(string name);
        class Program
        {
            static void Chinese(string name)
            {
                Console.WriteLine("你好:" + name);
            }
            void English(string name)
            {
                Console.WriteLine("Hello:" + name);
            }
            static void Main(string[] args)
            {
    HelloWord chinese
    = Chinese; Program pro = new Program();
    HelloWord english
    = pro.English; chinese("小明"); english("Alex"); } }

    后面的慢慢补充。

  • 相关阅读:
    Spring boot 整合 Mybatis + Thymeleaf开发web(一)
    JAVA截取字符串的几种方式
    【转】JAVA异常报错大全
    Linux中允许远程用户登录访问mysql的方法
    Ubuntu系统下将默认的python2.7升级到3.5
    Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服务器
    python将数据写入excel代码,python与office交互
    pyqt4桌面软件各种画布组合结构实例
    python之pyqt4的简单窗口布局以及信号和槽(上代码)
    python 005 正则表达式
  • 原文地址:https://www.cnblogs.com/myRailgun/p/6080569.html
Copyright © 2011-2022 走看看