没有合适的资源?快使用搜索试试~ 我知道了~
首页未将对象引用设置到对象的实例 (System.NullReferenceException)
下面基础的解释一下这错误: 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[]
资源详情
资源评论
资源推荐

未将对象引用设置到对象的实例未将对象引用设置到对象的实例
(System.NullReferenceException)
下面基础的解释一下这错误:
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引发的。
当然啦,出现这种异常的场景,那可是万万千,数也数不完,但本质是一样的。
个人观点认为,在三只鸟中发生此错误的原因各不同,基本如下:
代码如下:
新鸟:不知道这个错误,或见这错误的次数太少,所以代码基本防都不防,模仿式,大量的函数都潜伏这种错误杀手。
个人猜测:新鸟写的代码,都不加判断的原因可能:
其一:是他们不知这种情况,刚学习,经验不足,未有处理这种异常的经验。
其二:推测是他们高调的认为:多一个Null的判断,会使得性能下降,他们追求高性能,因此,基本上,不加。
中鸟:知道这个错误,只是考虑的不多,心不够细,人不够稳,写代码基本会加,但普遍不加。
中鸟比新鸟吃的虫,肯定多,所以出现这种情况,原因当然不一样了啦。



















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0