來自網絡。收集並整理。
今天又遇到"未將對象引用設置到對象的實例",敲代碼的多多少少遇到過改異常吧。既然遇到了索性就在網絡上收集一些引起該錯誤的罪魁禍首:
1、ViewState 對象為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" %>