码迷,mamicode.com
首页 > 其他好文 > 详细

[转] 未将对象引用设置到对象的实例( System.NullReferenceException )

时间:2014-11-13 18:23:48      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   io   ar   os   sp   for   

System.NullReferenceException:未将对象引用设置到对象的实例,这是一个新鸟,中鸟,老鸟都避不开的错误。

 

下面基础的解释一下这错误:

 

1:本质上的错误:

 

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

 

当然啦!结果就如下图了:

 

bubuko.com,布布扣

 

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

 

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" %

 

[转] 未将对象引用设置到对象的实例( System.NullReferenceException )

标签:des   style   blog   http   io   ar   os   sp   for   

原文地址:http://www.cnblogs.com/XingchenStudio/p/4095288.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!