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