1delegate——委派using System;
 2delegate——委派namespace uu
 3}
委派相当于一个容器,而这个容器使用来存放函数的或者说是用来封装函数的,而这个容器又可以看成一个函数,这个函数没有
   实现方法,只需要返回类型和参数与姚封装的函数一致就可以了,那么就可以封装这个函数了。
   例如上面的例子:
   1,声明了一个double型的委派myDelegate,参数为(long length,long width);那么此委派只能封装就有返回值且是double,而且
   参数为long的函数。
   2,在Measure类中,有两个方法,MeasureSquare和MeasureRectangle,这两个函数都具有反回值是double型的,参数也是long
   型的。所以这两个函数都可以分装到委派里面。
   3,上面说到,委派相当于一个函数,既然是函数,那么也就可以有参数和返回值(当然了要和所封装的函数一致)。
      1,在GGResult类中有一个方法Calc;它的参数为委派类型的参数,实际上是调用了委派所封装的方法,根据条件来初始化
      myDelegate所封装的方法,然后把这个方法通过参数的形式传送到Cale中,然后再Calc中调用这个方法。
   大概一看此程序没有什么可看的,其实不然,简单的看一下似乎没有问题,但仔细一想问题就出来了
   myDelegate=new GGResult.MyDelegate(myMeasure.MeasureSquare);
   myDelegate=new GGResult.MyDelegate(myMeasure.MeasureRectangle);
   这两句是初始化了委派即说明了委派来封装那个函数,并不是执行语句。那么什么时候开始执行这个委派呢?
   在 myGetResult.Calc(myGRdelegate);这句中,因为在Calc中有这么一句
   volume=pmydelegate(length,width)*height;
   所以在执行pmydelegate时就开始执行了上面的其中一个委派中的方法。
   那么参数从何而来?答案就是:在初始化GGResult时就把参数初始化到GGResult的构造函数中了,然后调用pmydelegate时
   就直接调用了。
  
     
   注意:在类中声明函数时,如果函数没有static关键字时,那么可以通过类的实例来引用,如果有static关键字时,只能用
   类名直接引用。
   类中类的初始化:
   在GGResult中声明了一个委派类MyDelegate那么在初始化时必须加上GGResult
   既GGResult.MyDelegate   实例名字=new GGResult.MyDelegate();

相关文章:

  • 2021-09-30
  • 2022-01-09
  • 2021-12-10
猜你喜欢
  • 2022-02-27
  • 2021-12-19
  • 2021-09-03
  • 2021-09-18
  • 2021-10-13
  • 2021-12-06
  • 2021-09-27
相关资源
相似解决方案