首页 > 代码库 > [转] 未将对象引用设置到对象的实例( System.NullReferenceException )
[转] 未将对象引用设置到对象的实例( System.NullReferenceException )
System.NullReferenceException:未将对象引用设置到对象的实例,这是一个新鸟,中鸟,老鸟都避不开的错误。
下面基础的解释一下这错误:
1:本质上的错误:
object a;//a是Null对象
protected void Page_Load(object sender, EventArgs e)
{
a.ToString();//调用一个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(‘ ‘);
}
{
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。
2:空数据行,就是你表一行数据都没有,全是Null。
所以预防性的写法是:
<%# Convert.ToString(Eval("字段"))=="1"?"Yes":"No" %
[转] 未将对象引用设置到对象的实例( System.NullReferenceException )
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。