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

