方法、事件和委托

一、方法的重载和重写

方法的重写用override,关键字virtual不能与static一起使用,应为静态是属于类层面的,而多态是属于对象层面的。由于抽象关键字实质上便是属于virtual的因而没有必要再加上virtual。       

有时候可能会涉及到子类隐藏基类的方法,  其目的是当基类中方法没有用virtual来修饰,并且子类还想进行重新涉及时,需要在子类中进行扩展,此时需要修改基类中的方法,这个时候我们可以在子类中对于相同名称的方法用new来修饰,从而达到隐藏基类的方法。

例如

public new void print()

{

console.writeline("这是子类隐藏基类的方法");

}     

二、委托和事件

委托主要用于回调机制和事件处理,委托实际上是一种引用类型,类似于指针,只不过是完全面向对象的,委托是对具有匹配参数的方法的调用,委托允许程序设计人员在执行传入期传入方法名,实现方法的动态调用。2.委托可以在类内部定义也可以在类的外部定义,但是委托对象必须在类的内部或方法体内定义。

pubic deletgate string mydelegate (int a);

public string method (int a)

{

   int s=a;

   string str=convert.tostring(s);

   return str;

}

mydelegate d=new mydelegate(method);

2.多重委托

委托不仅仅可以关联一个与之匹配的方法,还可以引用多个与之匹配的方法,这称为多重委托,其真正的实现是用+=来完成的。多重委托关联多个方法,但是最终返回的结果还是最后一个方法的结果,执行顺序是根据方法的先后进行调用。

3.事件

事件是发生某些动作时,向其它对象发送消息的一种方式。在c#中事件是依靠委托来实现的,事件作为类的方法成员之一,如果想让委托对象拥有跟方法一样的地位,则需要在定义委托对象的前面加上event,这就成为了一个事件。事件一般关联两个对象,触发事件对象----发送方,被通知对象----接受方。

public delegate void  mydelegate();

class program

{

     static void main()

     {

           A=new A();

          A.d+= new mydelegate(new program().show);

          A.run();

     }

      public void show()

       {

              console.writeline("这是事件的触发");

        }

}

class A

{

   public event mydelegate d;//事件

  public void run()

   {

        d();

    }

}

         委托是c#中事件的处理方式,委托是一种引用类型,而事件又是一种特殊的委托。触发事件,执行事件关联的处理函数,完成相应的功能。                                                          

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wsqplsh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值