未将对象引用设置到对象的实例

it2025-01-12  9

1本质上的错误:

object a;//a是Null对象 protected void Page_Load(object sender, EventArgs e) {     a.ToString();//调用一个Null对象的方法 }

 结果就如下图了:

这么赤裸裸的写出这种代码,不太容易,通常更倾向于下面一种:

2:通常性的错误:

示例1:一个过滤某些字符的函数:

        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(' ');         }

 这个函数比如容易看的出:如果value传进来为Null的时候,就等于Null.Replace被调用,就出现了上面的错误。

因此,通常的,在函数的首行,都会对value进行:if(!string.IsNullOrEmpty(value)) 一下。

示例2:再举一下通用性的调用错误,绑定,Eval("字段") ,这个方法比较常见,某些情况要转字符串比较,这里示例一下:

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

当Eval("字段")为Null时,一个Null.ToString(),必然也会出现上面的错误,那什么情况出现?

1:字段的值为Null 2:空数据行,就是你表一行数据都没有,全是Null。

所以预防性的写法是:

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

见到这异常:就是一个Null的对象调用了方法(属性或其它成员)变成Null.XXX引发的。当然,出现这种异常的场景,那可是万万千,数也数不完,但本质是一样的。

转载于:https://www.cnblogs.com/gisyang/p/4453805.html

最新回复(0)