2012-09-13 78 views
-4

可能重複:不設置到對象的實例
What is a NullReferenceException in .NET?爲什麼我會收到「對象引用不設置到對象的實例」

對象引用。

protected void Page_Load(object sender, EventArgs e) 
{ 
    int Role = Convert.ToInt32(Request.QueryString["Role"].ToString()); 
    try 
    { 
     if (Role != 3) 
     { 
      gv_ViewApplicants.Visible = true; 
      gv_ViewApplicants_SelectedIndexChanged(this, new EventArgs()); 
     } 
     else 
     { 
      gv_ViewApplicants.Visible = false; 
     } 
    } 
    catch (NullReferenceException e1) 
    { 

    } 

} 
+2

.Net C# - 這裏是你的回覆。您的「問題」似乎缺少實際問題部分...只請求「回覆.net C#」。 –

+0

這個錯誤究竟發生在哪裏? – Spontifixus

+3

停止詢問堆棧,停止在這種情況下幫助 - 操作應該把一些努力到他/她的問題,並遵循魔術「什麼是.NET中的NullReferenceException?」 - 主題... –

回答

2

嘗試

int Role = Convert.ToInt32(Request.QueryString["Role"] != null ? 
          Request.QueryString["Role"].ToString() : 
          "0"); 

,而不是

int Role = Convert.ToInt32(Request.QueryString["Role"].ToString()); 

你需要檢查空,如果不通過查詢字符串。

1

的代碼試圖訪問被設置爲空的引用類型變量的成員。

請讓源Request.QueryString["Role"]不爲空。

+2

你所做的只是猜測...沒有堆棧,你不能給出合格的答案。事實是:它也可能是'gv_ViewApplicants'或''gv_ViewApplicants_SelectedIndexChanged''方法中的東西,它是空的... –

0

您應該從不捕獲NullReferenceException

然而,問題似乎是在第一行:(外try塊的唯一線)

int Role = Convert.ToInt32(Request.QueryString["Role"].ToString()); 

Request爲空或QueryString["Role"]正在返回null

分享堆棧跟蹤以獲得更清晰的答案。

+1

由於op不提供堆棧,它也可能是他正在處理的捕獲範圍...所以'gv_ViewApplicants'也可以爲null,或者'gv_ViewApplicants_SelectedIndexChanged'方法 –

+0

(如果是這樣的話),不會在沒有任何通知的情況下捕獲它? – Azodious

+0

該場景很不明確。操作員可以在捕捉範圍內設置一個斷點。目前還不清楚這個異常是否會影響到用戶界面......所以......什麼都可以...... –

1

第一件事

INT角色= Convert.ToInt32(的Request.QueryString [ 「角色」]的ToString());

這條語句在外面試試,如果它在QueryString爲空的時候崩潰或者即使Convert.ToInt32方法拋出異常,catch塊也不會被執行。

你可以試試這個代碼

int number; 
    bool result = Int32.TryParse(Request.QueryString["Role"], out number); 
    if (result) 
    { 
    // your implemntation  
    } 
    else 
    {   
    // your implemntation 
    } 

你甚至可以使用Convert.ToString(的Request.QueryString [ 「角色」])如果仍然ü收到此錯誤。

相關問題