2011-02-12 50 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

您無法引用字段初始值設定項的實例屬性 - 當字段初始化時,實例尚未完全構建(即,沒有指針)。

相關問題