在后面的代码中声明和创建变量

时间:2010-07-27 15:08:09

标签: c# .net asp.net

以下是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”的时间是什么时候?第二种情况是否等同于第三种情况?

3 个答案:

答案 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次延迟了一点”