WEB开发网
开发学院软件开发C语言 Effective C# 原则35:选择重写函数而不是使用事件... 阅读

Effective C# 原则35:选择重写函数而不是使用事件句柄

 2009-02-19 08:15:54 来源:WEB开发网   
核心提示:很多.Net类提供了两种不同的方法来控制一些系统的事件,那就是,Effective C# 原则35:选择重写函数而不是使用事件句柄,要么添加一个事件句柄;要么重写基类的虚函数,为什么要提供两个方法来完成同样的事情呢?其实很简单,例如你很了一个很不错的Windows应用程序,它要响应鼠标点下的事件,那就是因为不同的情况下

很多.Net类提供了两种不同的方法来控制一些系统的事件。那就是,要么添加一个事件句柄;要么重写基类的虚函数。为什么要提供两个方法来完成同样的事情呢?其实很简单,那就是因为不同的情况下要调用为的方法。在派生类的内部,你应该总是重写虚函数。而对于你的用户,则应该限制他们只使用句柄来响应一些不相关的对象上的事件。

例如你很了一个很不错的Windows应用程序,它要响应鼠标点下的事件。在你的窗体类中,你可以选择重写OnMouseDown()方法:

public class MyForm : Form
{
 // Other code elided.
 protected override void OnMouseDown(
  MouseEventArgs e )
 {
  try {
   HandleMouseDown( e );
  } catch ( Exception e1 )
  {
   // add specific error handling here.
  }
  // *almost always* call base class to let
  // other event handlers process message.
  // Users of your class expect it.
  base.OnMouseDown( e );
 }
}

或者你可以添加一个事件句柄:

public class MyForm : Form
{
 // Other code elided.
 public MyForm( )
 {
  this.MouseDown += new
   MouseEventHandler( this.MouseDownHandler );
 }
 private void MouseDownHandler( object sender,
  MouseEventArgs e )
 {
  try {
   HandleMouseDown( e );
  } catch ( Exception e1 )
  {
   // add specific error handling here.
  }
 }
}

1 2  下一页

Tags:Effective 原则 选择

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