委托:

函数指针的功能(C++),而且不像C++中只指向静态的方法。、

所谓委托就是在执行的时候不会调用预先设定好的函数方法,而是直接在我们定义号的委托方法里面调用委托函数就可以了,那后面的工作就会变的简单许多,甚至增加了函数的可读性和可维护性。

例子:delegate void eatdelegate(string food )//委托函数、

 委托链的概念:

  eatdelegate eatchain;

eatchain=zs+ls+ww;

eatchain("西瓜");

 

在这里面+和-的作用太明显了。

比如:

   eatchain -/+=ls;//顺着上面的来的。


匿名方法:是在C#2.0里面的新加入的功能。


委托是如何代理动态方法的:

把委托作为方法的参数进行传递。。



事件event:

事件发行者:【发送者。】

事件订阅者:【也称为接受者。】


出版社和订阅者之间的关系的事件程序:?


class publisher//出版社

 {

   public delegate void publish();//声明事件所需要的代理(或者叫做委托。)

   public event public onpublish;//事件的方法

   public void issue()//触发事件的方法

  {

     if ( onpublish!=null)

      {

             console.writeline("发行刊物");

             onpublish();

          }

  }

}

class subscriber//订阅者

{

  public void recerve()//在事件订阅者中定义事件处理程序。

   {

       console.writeline("订阅者已经收到了刊物")

     }

}

class story

{

   static void main()

  {

       publisher pub=new publisher();

       subscriber zs=new subscriber();

       pub.onpublish+=new publisher.publish(zs.recerve);//向事件发行者订阅一个事件。

       pub.issue();//触发事件

     }

}


调用事件的时候使用的是对象名称;

调用委托的时候使用的是类名称;【因为委托是静态的。】

事件发行者只会把事件发送给事件的订阅者。


声明一个事件首先要生命一个委托 。声明委托的时候要使用void类型作为返回值。


.net framework事件的命名准则:


readonly:给这个成员赋值之后就不能改变它;


只读的所以值实现get方法。


在引发事件的类中提供一个受保护的方法。以on加事件名称命名,在该方法体中引发该事件;