WEB开发网
开发学院软件开发C语言 C#3.0笔记(二)预备知识之委托与事件 阅读

C#3.0笔记(二)预备知识之委托与事件

 2009-05-18 08:28:07 来源:WEB开发网   
核心提示: 很明显地看到add_OnCaculate方法调用的就是委托的Combine方法,从而我们也可以想到remove_OnCaculate方法调用的是Remove方法,C#3.0笔记(二)预备知识之委托与事件(2),从上面我们可以看到其实event关键字只是提供给我们了一种语法上的便利措施,一个

很明显地看到add_OnCaculate方法调用的就是委托的Combine方法,从而我们也可以想到remove_OnCaculate方法调用的是Remove方法。从上面我们可以看到其实event关键字只是提供给我们了一种语法上的便利措施。

一个稍微完整的例子

这个例子参考的是《C#与.NET3.0高级程序设计》上面的。使用Car来举例的,当车子加速时到一定限制值时会触发一个预警事件,当超过某一个速度时会触发一个车子爆炸事件。首先看委托跟事件:

  public delegate void CarEventHandler(string msg);

  public event CarEventHandler AbortToBlow;

  public event CarEventHandler Exploded;

EventCar类中有两个事件一个是AbortToBlow一个是Exploded。下面是Car的几个属性以及字段:

  private const int MaxSpeed = 180;

  public int CurrSpeed { get; private set; }

  public bool IsDead { get; private set; }

  public string Name { get; private set; }

其中IsDead是表示车子是否已经报废了。下面是一个加速的方法:

  public void Accelerate(int addSpeed)
  {
    if (IsDead)
    {
      if (this.Exploded!= null)
        Exploded("The Car Is Dead");
    }
    else
    {
      CurrSpeed += addSpeed;
      if (10 == MaxSpeed - CurrSpeed &&AbortToBlow != null)
      {
        AbortToBlow("Careful!Bona blow!");
      }
      if (CurrSpeed >= MaxSpeed)
        IsDead = true;
      else
        Console.WriteLine("CurrentSpeed:{0}", CurrSpeed);
    }
  }

上一页  1 2 3 4 5  下一页

Tags:笔记 预备 知识

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接