2011-02-12 6 views
0

을 클래스 내에서 사용 할 필요가 있지만 방법 않습니다왜 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

회원 변수 initialisers - 당신의 id 과제는 무엇인가 - 인스턴스 메서드 또는 속성을 사용할 수 없습니다. Page.Request는 인스턴스 속성이므로 멤버 initialisers에서 사용할 수 없습니다.

+0

두 코드 예제에서 모두 Page 클래스에 들어있어 혼란 스럽습니다. –

+0

답변을 업데이트 해 주셔서 감사합니다. –

1

나는 클래스가 instantated 때까지 반원들이 만들어지지 않습니다 때문입니다 추측 것입니다. 이 때문에 클래스 메서드 내에서를 제외하고는 Request 속성에 액세스 할 수 없습니다. ( 포함) 현재의 클래스의

1

속성은 생성자 때까지 액세스 할 수 없습니다. 필드 초기화 프로그램은 생성자가 실행되기 전에 발생하므로 속성 (및 필드 및 메서드)에 액세스 할 수 없습니다.

1

필드의 초기화 프로그램에 대한 인스턴스 속성을 참조 할 수 없습니다. 필드 초기화시 인스턴스가 완전히 구성되지 않았습니다 (즉, this 포인터가 없음).