2013-12-10 23 views
0

獲取屬性我創建了一個類名Examination,在這個類我有名字Get Question()的方法,在take exam當我創建的Examination對象和運行應用程序它提供了以下錯誤。的NullReferenceException而從會話對象

NullReferenceException: Object reference not set to an instance of an object.

Source Error: 


Line 18:   Examination e = (Examination)Session["questions"]; 
Line 19:   // display data 
Line 20:   lblSubject.Text = e.sname; 
Line 21:   lblQno.Text = e.curpos + 1 + "/" + e.SIZE; 
Line 22:   lblCtime.Text = DateTime.Now.ToString(); 
+0

是的第20行拋出異常? –

+0

@ JennyO'Reilly是在線20 –

+0

好像'e'是空的,首先檢查Session [「questions」]是否包含數據,是否可以將其轉換爲'Examination'。 – Abbas

回答

3

最有可能Session["questions"]不包含一個值,並返回null。將null轉換爲引用類型是完全有效的,但在嘗試訪問它的屬性時會發生異常。

您應該測試它是否爲空,例如:

Examination e = (Examination)Session["questions"]; 
if (e == null) 
{ 
    lblSubject.Text = "Your session has expired"; 
} 

(如果我錯了,e實際上包含一個Examination對象的引用,那麼它的lblSubjectnull

+0

if e null then然後做什麼 –

+0

當你的Session(每個默認iirc 20分鐘)超時時,e是空的。在這種情況下,您需要重新啓動會話。有這樣的事件處理程序:http://msdn.microsoft.com/en-us/library/ms178583.aspx –

+0

正如提到會議[「問題」]可能爲空。在使用任何對象之前,如果它從不同的類/源返回(即使它不能爲空),它總是一個很好的實踐。如果將來其他類/源的實現會發生什麼變化呢?它只是安全檢查。 –