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"); } }

    后面的慢慢补充。

  • 相关阅读:
    javascript Math.random()随机数函数
    asp.net 前台获取后台c#代码信息
    关于C#网站一般处理程序(ashx)中session的问题
    怎样才能在一般处理文件中创建新的Session和访问已经存在的Session?
    使用SqlParameter向数据库中插入数据
    C#串口编程学习简单实例
    认识nodejs
    01.Javascript中的接口Interface [转载]
    动态添加脚本,并触发回调函数 初步实现按需加载
    JS正则表达式 收藏
  • 原文地址:https://www.cnblogs.com/myRailgun/p/6080569.html
Copyright © 2011-2022 走看看