开发者

Why does HttpContext.Current need to used within a class, but not a method

For instance if I'm inside the Page_Load method and I want to get query string data I just do this:

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

but if I am inside the class, but not within any method I have to use:

   public partial class Product_Detail : System.Web.UI.Page
   { 
     string id = HttpContext.Current.Request.QueryString["p"];
         protected void Page_Load(ob开发者_Python百科ject sender, EventArgs e)
         {
         }
   }

Why is that?


Member variable initialisers - which is what your id assignment is -- can't use instance methods or properties. Page.Request is an instance property, and therefore isn't available to member initialisers.


I would surmise it is because class members are not created until the class is instantated. Because of this you cannot access the Request property except within your class methods.


Properties of the current class (including this) are not accessible until the constructor. Since field initializers happen before the constructor is executed, properties (and fields, and methods) are not accessible.


You cannot refer to an instance's properties for a field's initializer—when the field is initialized the instance isn't fully constructed yet (i.e., there's no this pointer).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜