代码之家  ›  专栏  ›  技术社区  ›  zs2020

在代码隐藏中声明和创建变量

  •  1
  • zs2020  · 技术社区  · 14 年前

    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 回复  |  直到 14 年前
        1
  •  2
  •   cRichter    14 年前

    场景1:

    场景2: 变量v在类A的每次实例化时都被初始化,因为构造函数被调用。

    场景3: 当页面加载发生时,变量v在每个请求上都被初始化。

    如果您仅在页面加载发生后才访问变量v,那么场景2&3可以平等对待。

        2
  •  0
  •   Mitchel Sellers    14 年前

    初始化点是示例1、2和3之间的差异。

    在示例一中,如果没有其他调用,v将始终为null。

    在第三个例子中,v将一直为null,直到Page\u Load调用包含对默认“Variable”对象的引用为止。

        3
  •  0
  •   James Curran    14 年前

    它是在创建页面对象时创建的,必须在调用该对象的任何事件或方法之前发生。创建在第3个“中延迟了一点”