關於“System.NullReferenceException: 未將對象引用設置到對象的實例”問題原因。


來自網絡。收集並整理。

今天又遇到"未將對象引用設置到對象的實例",敲代碼的多多少少遇到過改異常吧。既然遇到了索性就在網絡上收集一些引起該錯誤的罪魁禍首:

1ViewState 對象為Null
2
DateSet 空。
3
sql語句或Datebase的原因導致DataReader空。
4
、聲明字符串變量時未賦空值就應用變量。
5
、未用new初始化對象。
6
Session對象為空。
7
、對控件賦文本值時,值不存在。
8
、使用Request.QueryString(),所獲取的對象不存在,或在值為空時未賦初始值。
9
、使用FindControl,控件不存在卻沒有做預處理。
10、重復定義造成未將對象引用設置到對象的實例錯誤。


示例1:

 這個函數比如容易看的出:如果value傳進來為Null的時候,就等於Null.Replace被調用,就出現了上面的錯誤。
因此,通常的,在函數的首行,都會對value進行:if(!string.IsNullOrEmpty(value)) 一下。

public static string FilterValue(string value) 
{ 
  string[] filterChar = new string[] { "\'", ",", ">", "<", "=", ";", "\"", "--" }; 
  for (int i = 0; i < filterChar.Length; i++) 
  { 
    value = value.Replace(filterChar[i], ""); 
  } 
  return value.Trim(' '); 
} 

 

示例2:

  綁定,Eval("字段") ,這個方法比較常見,某些情況要轉字符串比較

    <%# Eval("字段").ToString()=="1"?"Yes":"No" %>

  當Eval("字段")為Null時,一個Null.ToString(),必然也會出現上面的錯誤,那什么情況出現? 
  1:字段的值為Null
  2:空數據行,就是你表一行數據都沒有,全是Null。 

 所以預防性的寫法是:

    <%# Convert.ToString(Eval("字段"))=="1"?"Yes":"No" %>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM