【C#】錯誤“System.NullReferenceException:未將物件引用設定到物件的例項“解析
錯誤原因分析 |
首先,你要知道,在.net裡面所有操作的變數都是物件。
一般的標示符,如int,string,char等等,最後都會轉換為System名稱空間下面的類名(如Int32,String,Char等等),當然類例項化的就更不用說了。物件就必然存在若干的屬性和方法。你要操作一個物件,也必然是操作它的屬性或者方法。
“未將物件引用設定到物件的例項”,也就是說你要呼叫的物件例項裡面不存你要操作的屬性或者方法,而在確定了你的物件裡面有你要操作的屬性或者方法,但是仍然報錯,那很可能是你操作的物件變成null了。因為null實際上也是一個物件(Nullable型別),所以它不會提示你“你操作的物件為空”這類的資訊,而是物件例項中不存在你要操作的屬性或者方法,也就是“未將物件引用設定到物件的例項”。
錯誤原因錦集 |
1、ViewState物件為Null。
2、DataSet為空。
3、SQL語句或DataBase的原因導致DataReader為空。
4、宣告字串變數時未賦空值就應用變數。
5、未用new例項化物件。
6、Session物件為空。
7、對控制元件賦文字值時,值不存在。
8、使用Request.QueryString()時,所獲取的物件不存在,或在值為空時未賦初始值。
9、使用FindControl時,控制元件不存在卻沒有做預處理。
10、重複定義造成未將物件引用設定到物件的例項錯誤。
11、控制元件名稱在codebehind裡面沒有對應。
12、設定的變數為空值或沒有取到值,一般在傳遞引數時出錯。也會在使用DataGridView或DataList等資料控制元件時出現。
13、物件所在的名稱空間沒有引用。
14、程式出現異常,導致例項化失敗,物件為 Null。
解決方案 |
1、使用Try……Catch……Finally捕捉錯誤,或者直接使用response.write()輸出所取的變數值。
2、檢視程式碼中是否存在未初始化的變數。