解決辦法
出現“未將對象引用設置到對象的實例” 錯誤,一般是下面的原因:
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]);
}
運行後會我們發現,會有以下錯誤產生:
異常詳細信息: 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。執行權限不夠。加ASPNET和EVETRYONE所有權限。
1、ViewState 對象爲Unll。
2、DateSet 空。
3、sql語句或Datebase的原因導致DataReader空。
4、聲明字符串變量時未賦空值就應用變量。
5、未用new初始化對象。
6、Session對象爲空。