来自 威尼斯国际官方网站 2019-11-21 04:11 的文章
当前位置: 威尼斯国际官方网站 > 威尼斯国际官方网站 > 正文

委托入门

                   在调控台程序 Program.cs中加多如下代码:

  2.多播委托:绑定多个措施

   (1卡塔尔、新建了三个类用来 定义委托以致举行委托注脚

3、委托怎么用

1、委托是怎样

聊起信托,某个刚刚入门c#的人倍感很伟大上,未有接触过,但是事实上过四个人都用过Lambda表达式,实际上拉姆da表达式正是贰个寄托。

威尼斯国际官方网站 1

  换言之正是多播委托就能够产生委托链,以+= 和-=操作符分别张开绑定和清除绑定的操作,多个点子绑定到委托变量就形成了二个委托链。对其进展调用的时,将相继调用全部回调的措施。

  寄托是多个类,它定义了点子的品类,使得能够将艺术当作另一个措施的参数来展开传递,这种将艺术动态地赋给参数的做法,可防止止在前后相继中山大学量行使If-Else(Switch)语句,相同的时间使得程序有所更加好的可增加性。

 3.4 什么是委托链

4、总结

   1.2 委托分类:

运作,输出结果如下:

3.2   如上操作大家开展了信托的操作,重要两步操作:注解委托和挂号方式(也叫绑定方法)

至于信托入门有个大神写的很详细:张子阳的博客  C#中的委托和事件 - Part.1 。上边就遵照思明的掌握介绍一下委托入门

      在原来的底子上加多解绑方法 -= 

2、为何使用委托

 

威尼斯国际官方网站 ,       2.绑定方法    绑定具体方法,传递格局名称;

  1.单播委托:绑定单个方法

        static void Main(string[] args)
        {
            GManage gm = new GManage();
            gm.delegate1 += new Program().Write1; //先给委托类型的变量赋值
            gm.delegate1 += Program.Write2; //给此委托变量再绑定一个静态方法
            gm.SayHello(1, 2);  // 将先后调用 Write1 与 Write2 方法

            Console.WriteLine("******解绑方法Write2后******");
            gm.delegate1 -= Program.Write2; // 委托方法解绑
            gm.SayHello(1, 2);  // 解绑后只会调用 Write1
            Console.ReadKey();
        }

      委托正是八个类,他的平价超多,比如防止核心措施中存在大量的if....else....语句(或swich开关语句);满意程序设计的OCP原则;使程序有所扩充性;结合Lambda表明式,简化代码,高效编制程序;实现程序的松耦合(解耦),那么些在事变(event)中反映比较猛烈等等。

 

  开采人士能够把办法的引用封装在委托对象中(把经过的调用转变为目的的调用,丰富展现了寄托加强了面向对象编制程序的酌量卡塔 尔(阿拉伯语:قطر‎,然后把信托对象传递给急需援用方法的代码,那样在编写翻译的历程中咱们并不知道调用了哪些方法,那样一来,C#引进信托机制后,使得方法申明和艺术达成的分手,丰硕呈现了面向对象的编制程序观念。

3.3  如上操作大家知道了委托能够开展艺术绑定,相近的信托也得以张开艺术解绑:如下我们只改正 Program.cs中的main方法。

    3.1  委托的概念其实很简短:如下,首先新建一个调控台程序,然后开展如下操作,

威尼斯国际官方网站 2

运维结果如下:委托仅仅试行了Write1。

  1.证明委托   用delegate注解;

public class Program
    {
        public void Write1(int x, int y)
        {
            Console.WriteLine("{0}+{1}={2}", x, y, x + y);
        }

        public static void Write2(int x, int y)
        {
            Console.WriteLine("{0}*{1}={2}", x, y, x * y);
        }

        static void Main(string[] args)
        {
            GManage gm = new GManage();
            gm.delegate1 = new Program().Write1; //先给委托类型的变量赋值
            gm.delegate1 += Program.Write2; //给此委托变量再绑定一个静态方法
            gm.SayHello(1, 2);  // 将先后调用 Write1 与 Write2 方法
            Console.ReadKey();
        }
    }

  (2卡塔尔、委托的主意绑定以致调用

源码链接:

码字不便于,转载请表明出处。谢谢

public class GManage
    {
        /// <summary>
        /// 1、定义委托,它定义了可以代表的方法的类型
        /// </summary>
        /// <param name="x"></param>
        /// <param name="y"></param>
        public delegate void GreetingDelegate(int x, int y);

        /// <summary>
        /// 2、声明delegate1变量
        /// </summary>
        public GreetingDelegate delegate1;

        /// <summary>
        /// 3、被调用委托的方法
        /// </summary>
        /// <param name="x"></param>
        /// <param name="y"></param>
        public void SayHello(int x,int y)
        {
            if (delegate1 != null) //如果有方法注册委托变量
            {
                delegate1(x, y); //通过委托调用方法
            }
        }
    }

寄托扩大了大家的咀嚼面,让我们更是精晓c#的博雅。

          大家应有注意一点:委托的形参类型,形参个数和委托的重返值必须与将要绑定的艺术的形参类型,形参个数和再次来到值生龙活虎致;

本文由威尼斯国际官方网站发布于威尼斯国际官方网站,转载请注明出处:委托入门

关键词: