以下是3种情况:
namespace NS
{
public partial class A: System.Web.UI.UserControl
private Variable v;
protected void Page_Load(object sender, EventArgs e){
if (!Page.IsPostBack) v= new Variable();
....
}
}
namespace NS
{
public partial class A: System.Web.UI.UserControl
private Variable v = new Variable();
protected void Page_Load(object sender, EventArgs e){
}
}
namespace NS
{
public partial class A: System.Web.UI.UserControl
private Variable v;
protected void Page_Load(object sender, EventArgs e){
v = new Variable();
}
}
每次为第二个场景创建变量“v”的时间是什么时候?第二种情况是否等同于第三种情况?
答案 0 :(得分:2)
场景1: 当页面加载发生时,变量v在每个请求中初始化,并且没有回发。 (否则为空)
方案2: 变量v在类A的每个实例化时初始化,而bevore则调用构造函数。
方案3: 当页面加载发生时,变量v在每个请求中初始化。
注释: 如果只在页面加载发生后访问变量v,那么方案2& 3可以平等对待。
答案 1 :(得分:0)
在您的示例中,变量始终位于同一点,它是A类的私有成员。
初始化点是示例1,2和3之间的差异。
在示例一中,如果没有其他调用,则v将始终为null。
在示例二中,只要引用了A类,v就会包含对默认“Variable”对象的引用
在示例三中,v将为null,直到Page_Load调用之后将包含对默认“Variable”对象的引用。
答案 2 :(得分:0)
“它是在创建Page对象时创建的,必须在调用对象的任何事件或方法之前发生。”和“排序。创造在第3次延迟了一点”