2011-07-02 46 views
1

我在我的代碼中得到一個NullReferenceException。nullreferenceexception在visual studio

我從同一個項目中的另一個頁面調用方法datecheck並傳遞兩個字符串作爲參數。這些包含用戶以字符串格式選擇的日期。 現在,當我嘗試初始化2個標籤label1和label2與這些字符串值我得到NullReferenceException。表示錯誤和棧跟蹤

行代碼如下:

Line 39:   public void datecheck(String s1, String s2) 
Line 40:   { 
Line 41:    Label1.Text = s1; 
Line 42:    Label2.Text = s2;    
Line 43:   } 

源文件:I:\阿迪蒂亞\亞嘉賓\ GuestHouseApp \ GuestHouseApp \預訂Status.aspx.cs行:41

堆棧跟蹤:

[NullReferenceException異常:對象 參考不設置到 對象的實例]
GuestHouseApp.Booking_Status.datecheck(字符串 S1,字符串S2)在 I:\阿迪蒂亞\亞嘉賓\ GuestHouseApp \ GuestHouseApp \預訂 Status.aspx.cs:41
GuestHouseApp.Booking.Button1_Click(對象發件人,EventArgs的)在 I:\阿迪蒂亞\亞嘉賓\ GuestHouseApp \ GuestHouseApp \ Booking.aspx.cs:28
System.Web.UI.WebControls.Button.OnClick(EventArgs的 E)113個
System.Web.UI.WebControls。 Button.RaisePostBackEvent(String eventArgument)+112
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)+10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl,字符串eventArgument)13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection中 POSTDATA)36
System.Web.UI.Page.ProcessRequestMain (布爾 includeStagesBeforeAsyncPoint,布爾 includeStagesAfterAsyncPoint)5348

+0

你還沒有初始化'Label1' ...仔細檢查。簡單地爲.Text屬性賦值並不會初始化Label控件 – IAbstract

+0

幾乎所有'NullReferenceException'的情況都是一樣的。請參閱「[什麼是.NET中的NullReferenceException?](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-in-net)」的一些提示。 –

回答

0

我猜的Label1尚未初始化。

4

注意錯誤信息和行號。以下是如何讀取堆棧跟蹤:

對象引用[爲空且未]設置爲對象的實例[在方法]中GuestHouseApp.Booking_Status.datecheck [at file:line] Status.aspx.cs :41

如果編譯的代碼是最新的,那麼這意味着行Label1.Text = s1;是引發異常的行。

此外,可以推斷Label1爲空,因爲發生這種情況時會引發NullReferenceException:(anExpressionEvaluatingToNull).Member顯式接收器(可能爲null)上的唯一成員是Text,因此Label1必須爲空。

如果需要,使用調試器:然後您可以檢查當前變量和對象。

快樂編碼。

+1

+1好解釋 –

+0

你的解釋很好,但是如果Label1的Text屬性有類似'if(value == null)'拋出new NullReferenceException();'?那不是說問題可能是空的嗎?儘管你可能會在棧跟蹤中多出一行。 – Alxandr

+0

@Alxandr:一個'string'可以爲空 - 它的鬆散*處理方式與空字符串非常相似。唯一一次這將是一個問題是你要執行一個函數,需要'(!String.IsNullOrEmpty(s1))' – IAbstract