使用VS2008,C#。什么时候AutoEventWireup
设置为 true 并在我调用的网络表单中base.OnLoad(e)
like:
protected void Page_Load(object sender, EventArgs e)
{
base.OnLoad(e);
}
The base.OnLoad(e)
最终打电话Page_Load
(调用自身)。这最终会导致堆栈溢出错误。我已经能够通过设置来解决它AutoEventWireup
虚假和压倒性的OnLoad
:
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
}
这按我的预期工作(没有堆栈溢出)。但任何人都可以解释为什么在第一个例子中base.OnLoad(e)
调用相同的加载事件(调用自身)而不是调用OnLoad
基类中的事件(System.Web.UI.Page
)?
Page.OnLoad
里面有以下伪代码
protected virtual void OnLoad() {
// some stuff
if (Load != null)
Load(this, new EventArgs());
}
如果你覆盖OnLoad
函数,发生的事情是:你的OnLoad
发生,然后它调用base.OnLoad()
,这称为(空)Load
event.
如果您实施Load
事件和呼叫base.OnLoad()
,这就是发生的情况:base.OnLoad()
称为Load
事件。这Load
事件然后调用base.OnLoad()
. Then, base.OnLoad()
称为Load
事件。剩下的就是,正如他们所说,要理解递归,你必须首先理解递归。
希望我说清楚了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)