C# 未將對象引用設(shè)置到對象的實例
出現(xiàn)“未將對象引用設(shè)置到對象的實例” 錯誤,一般是下面的原因:
1、ViewState 對象為Null。
2、DateSet 為空。
3、sql語句或Datebase的原因?qū)е翫ataReader空。
4、聲明字符串變量時未賦空值就應(yīng)用變量。
5、未用new初始化對象。
6、Session對象為空。
7、對控件賦文本值時,值不存在
8、使用Request.QueryString()時,所獲取的對象不存在,或在值為空時未賦初始值
9、使用FindControl時,控件不存在卻沒有做預(yù)處理
10、重復(fù)定義造成未將對象引用設(shè)置到對象的實例錯誤
很多時候在運行程序時,會出現(xiàn)“未將對象引用設(shè)置到對象的實例”這樣的提示信息,主要是在代碼中重復(fù)定義了造成的,只要將其中一個刪除就可以了。
第一種:重復(fù)定義造成未將對象引用設(shè)置到對象的實例錯誤
一般在C#中造成“未將對象引用設(shè)置到對象的實例”錯誤都是控件名稱與codebehind里面的沒有對應(yīng),對于初學(xué)編程的人,而在編碼中重復(fù)定義也會造成這種問題的產(chǎn)生。
以下是一個例子:
public string[] c; private void Page_Load(object sender, System.EventArgs e){ aaa(); bbb(); } private void aaa(){ string[] c=new string[3]; //c=new string[3]; c[0]="我們"; c[1]="西部"; c[2]="學(xué)習(xí)"; } private void bbb(){ Response.Write(c[0]+c[1]+c[2]); }
運行后會我們發(fā)現(xiàn),會有以下錯誤產(chǎn)生:
異常詳細(xì)信息: System.NullReferenceException: 未將對象引用設(shè)置到對象的實例。
源錯誤:
行 33: private void bbb()
行 34: {
行 35: Response.Write(c[0]+c[1]+c[2]);
行 36: }
行 37:
很多初學(xué)者都會有疑問:我已經(jīng)定義了變量 public string[] c,而且也進(jìn)行了實例化 string[] c=new string[3],但是為什么在調(diào)用數(shù)組c的時候還會報“未將對象引用設(shè)置到對象的實例”的錯誤呢?
問題出在string[] c=new string[3]這里,在前面已經(jīng)將數(shù)組c定義后,在函數(shù)aaa()中再次將數(shù)組定義,造成前面定義的數(shù)組不能實例化。只需要將 string[] c=new string[3]修改成 c=new string[3] 即可。
第二種:空對象引用導(dǎo)致錯誤
1。控件不存在。
2。執(zhí)行權(quán)限不夠。加ASPNET和EVETRYONE所有權(quán)限。
1、ViewState 對象為Unll。
2、DateSet 空。
3、sql語句或Datebase的原因?qū)е翫ataReader空。
4、聲明字符串變量時未賦空值就應(yīng)用變量。
5、未用new初始化對象。
6、Session對象為空。
補充
C#中報: 未將對象引用設(shè)置到對象的實例這個錯誤一般都是對象為null產(chǎn)生的,下面幾個簡單的例子:
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { //string str1 = ""; //str1 = str1.TrimEnd(','); //不會報錯 //string str2 = null; //str2 = str2.TrimEnd(',');//報錯:未將對象引用設(shè)置到對象的實例. List<StarInfo> list = null; //if (list.Count > 0 && list != null) //{ // //邏輯與“&&” // //報錯:未將對象引用設(shè)置到對象的實例. //} //if (list != null && list.Count > 0) //{ // //邏輯與“&&” // //不會報錯,if()中的條件語句按先后順序去執(zhí)行判斷的,在邏輯與“&&”時:如果第一為flase,后面的判斷條件都不會被執(zhí)行了,以此類推。 // //如果第一個為true繼續(xù)執(zhí)行下一個判斷條件。 // //注意:我是已if (list != null && list.Count > 0)來解釋說明的。你們要根據(jù)自己寫的條件去推理。 //} //if (list.Count > 0 || list != null) //{ // //邏輯或“||” // //報錯:未將對象引用設(shè)置到對象的實例. //} //if (list != null || list.Count > 0) //{ // //邏輯或“||” // //報錯:未將對象引用設(shè)置到對象的實例. // //if()中的條件語句按先后順序去判斷的,在邏輯或“||”時:如果第一為flase,后面的判斷條件會繼續(xù)被執(zhí)行,以此類推。 // //如果第一個為true后面的判斷條件都不會執(zhí)行了。 // //注意:我是已if(list != null || list.Count > 0)來解釋說明的。你們要根據(jù)自己寫的條件去推理。 //} } }
火車頭采集軟件啟動任務(wù)運行時,提示:未將對象引用設(shè)置到對象的實例
正在初始化配置,請稍等...
啟動任務(wù)時出錯:未將對象引用設(shè)置到對象的實例。Boolean A0AF549FC79BEB974A2EC34D087596DC6(Boolean, Boolean, Boolean)
解決辦法: 采集規(guī)則復(fù)制一份 黏貼使用即可。
補充:火車頭中也可以退出保存當(dāng)前規(guī)則,然后重新打開,檢查對方網(wǎng)站是否進(jìn)行來源判斷。
相關(guān)文章
c# winform treelistview的使用(treegridview)實例詳解
這篇文章主要介紹了c# winform treelistview的使用(treegridview),本文通過實例代碼給大家詳細(xì)介紹,需要的朋友可以參考下2017-12-12C#實現(xiàn)DataTable轉(zhuǎn)TXT、CSV文件
這篇文章介紹了C#實現(xiàn)DataTable轉(zhuǎn)TXT、CSV文件的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-04-04C#模板方法模式(Template Method Pattern)實例教程
這篇文章主要介紹了C#模板方法模式(Template Method Pattern),以實例形式講述了C#抽象類模板方法的用法,具有很高的實用價值,需要的朋友可以參考下2014-09-09C#使用ADO.Net連接數(shù)據(jù)庫與DbProviderFactory實現(xiàn)多數(shù)據(jù)庫訪問
這篇文章介紹了C#使用ADO.Net連接數(shù)據(jù)庫與DbProviderFactory實現(xiàn)多數(shù)據(jù)庫訪問的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-05-05