2011-02-12 52 views
0

举例来说,如果我Page_Load方法里面,我想查询字符串数据我只是这样做:为什么HttpContext.Current需要一个类中使用,但没有一个方法

public partial class Product_Detail : System.Web.UI.Page 
    {  
     protected void Page_Load(object sender, EventArgs e) 
     { 
      string id = Request.QueryString["p"]; 
     } 
    } 

但如果我在课堂内,但不是在任何方法中,我必须使用:

public partial class Product_Detail : System.Web.UI.Page 
    { 
    string id = HttpContext.Current.Request.QueryString["p"]; 
     protected void Page_Load(object sender, EventArgs e) 
     { 
     } 
    } 

为什么?

回答

1

成员变量初始值 - 这就是您的id赋值 - 不能使用实例方法或属性。 Page.Request是一个实例属性,因此对成员初始化者不可用。

+0

我在这两个代码示例的页面类中,这就是为什么它让我困惑。 – 2011-02-12 03:11:14

1

我会推测这是因为类成员不会创建,直到类是即时的。因此,除了在你的类方法中,你不能访问Request属性。

1

当前类的属性(包括这个)直到构造函数才可访问。由于字段初始值设定项在执行构造函数之前发生,属性(以及字段和方法)不可访问。

1

您无法引用字段初始值设定项的实例属性 - 当字段初始化时,实例尚未完全构建(即,没有指针)。

相关问题