0

如果我的 aspx.cs 页面中有以下代码:

    protected void page_Load(object sender, EventArgs e)  
    {

    }
    protected void PAGE_LOAD(object sender, EventArgs e) 
    {

    }
    protected void PaGe_LoAD(object sender, EventArgs e)
    {

    }

C# 允许我在同一个地方创建这些方法,因为由于区分大小写的性质,这些方法是可区分的……但是编译器如何决定执行哪一个来代替它的真实 Page_Load ?
谢谢 !!

4

1 回答 1

0

网站配置中的一个属性是 AutoEventWireup。
http://msdn.microsoft.com/en-us/library/system.web.configuration.pagessection.autoeventwireup.aspx
事件签名在运行时而不是在编译时连接。所以,这不是编译器的魔法。

执行一段代码以确定要为哪个事件调用哪个委托。该代码似乎不区分大小写。

有关上述内容的更深入解释,请查看此处http://odetocode.com/Blogs/scott/archive/2006/02/17/inside-autoeventwireup.aspx信息可能很旧,但我不认为它已过时。

您可以采用一种方法来找出确切的代码是http://aspnetresources.com/articles/event_handlers_in_global_asax,它为 global.asax 中的事件处理程序回答了同样的问题。

获得反射器和快乐挖掘。

于 2012-09-26T08:41:51.317 回答