C#中的委托_多播委托_以及事件的概要

1:委托

           我们定义一段代码:Person   obj   =   new   Person   (); ,就是说 obj 这个【引用】类型指向了一个新的对象   【  new   Person   ()】 

           同样的,委托也是一种【引用】类型,一种能够指向方法的类型。在方法中有无参数的方法和带参数的方法,参数也是一种类型,所以我们就可以将这种  ”委托类型”,传入到方法中。通俗点说:委托可以代表一个方法或多个方法(多播委托)。

namespace 多播委托
{

  public delegate void DelTest1( string  s );//申明一个委托(委托可以指向多个方法),申明的委托要与被委托的方法具有相同的签名;
    class Program
    {

        static    void    Main(string[] args)
        {

                DelTest1    dels = Test1;

                / /dels += Test2;   / /多播委托 ,dels这个委托可以指向多个方法,这里不注释的话控制台显示两个方法的输出

                dels ("李梅");//最后会在控制台输出  Hell李梅 (这里调用了委托,也可以将委托传入方法

                 Console.ReadKey();

        }

        public    static    void Test1( string  s ){  Console.WriteLine("Hello" +  s) ;   }    / /被委托的方法 

         public    static    void Test2( string  s ){  Console.WriteLine("你好啊" +  s) ;   } 

      }

}

在上面代码中    / /dels += Test2;  这段代码 变为dels = Test2;   那么只会输出Test2的内容,也就是说吧 +=  变为   =,会覆盖以前委托的内容。

2:事件: 是一个委托类型的实列,只能在定义它的类的内部来进行访问。在类外面智能注册事件的响应方法。

在类的内部定义事件 :public event  DelTest1  DelTest1Event;  / /定义了一个事件,在类的外部给事件添加事件响应方法,可以理解为一个私有的委托实列,给事件添加事件方法是和委托是一样的。

猜你喜欢

转载自blog.csdn.net/m0_37852399/article/details/83892251