您的位置:首页 > 编程语言 > ASP

用简单的代码测一测你是否真的了解:Asp.Net中的事件和委托的实现

2009-12-12 23:19 561 查看
页面:

<%@ Page Language="C#" CodeBehind="Default.aspx.cs" AutoEventWireup="true" Inherits="WebApplication1._Default" %>后台:

代码protected internal virtual void OnLoad(EventArgs e)
{
if (this.HasEvents())
{
EventHandler handler = this._occasionalFields.Events[EventLoad] as EventHandler;
if (handler != null)
{
handler(this, e);
}
}
}

和我们的想象有一点差别,但完全可以理解,而且你可以进一步的点击深入。

至此,我们可以梳理出ASP.NET的委托事件机制:
1.  .NET自有的委托EventHandler,确定了委托调用的方法签名(参数:sender和e,返回值void),这就是为什么我们看到的事件方法都长得一个样子的原因;

2.  在Page类及其父类中,的确是定义了一系列的事件和击发(raise)这些事件的方法。我们可以利用这些事件(如写Page_Load()方法),也可以直接override调用这些事件的方法(如OnLoad()方法)。这两者之间的区别或关系,以前我一直是晕的。

3.  因为AutoEventWireup的原因,我们没有看到“事件订阅”的代码,太遗憾了,所以我们接下来自己实现它:(首先AutoEventWireup=“false”)

protected override void OnInit(EventArgs e)
{

base.OnInit(e);
this.Load += new EventHandler(Page_Load);
}

现在,能回答本文开头的那些题目了吧?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐