Just ✿ 跬步

【yhl】❤

"未将对象引用设置到对象的实例"异常的几种常见场合 【转载留着查找方面,哈哈】

在.net编程中,当我们使用一个并不存在的对象时,系统就会抛出这个异常:System.NullReferenceException: 未将对象引用设置到对象的实例。下面把几种常见的场合做下介绍:

 

1.没有传参数给当前页面,却在程序里直接获取

如果我们没有给页面传一参数,假设参数名为name,但我们直接在程序里用Request.QueryString["name"]获取,则必然出现未将对象引用设置到对象的实例异常,例如:

string name = Request.QueryString["name"].ToString();

要避免出现此类异常,可先进行参数是否为空判断:

 if (Request.QueryString["name"] != null)
{ string name = Request.QueryString["name"].ToString(); }

 

 

2.Session,ViewState等内置对象未定义时直接使用

当我们没有定义Session,ViewState时却直接引用,例如:

string name = Session["name"].ToString();

此时则也会引发“未将对象引用设置到对象的实例“异常,解决这类问题可先定义值,例如:

Session["name"] = "abc";

ViewState["name"] = "abc";

则此时再执行string name = Session["name"].ToString()则不会出现错误,当然在引用前进行是否为空判断,也是很必要的:

if (Session["name"] != null)
{ string name = Session["name"].ToString(); }

 

 

3.下拉列表不存在某值时却设置该值为选定状态

当我们要设定下拉列表某项为选定状态时,经常使用 this.ddl.Items.FindByValue("abc").Selected = true;

但是当下拉列表的项目中并不存在"abc"这一项时,则会引发“未将对象引用设置到对象的实例“异常,解决该类问题是应先判断下拉列表里是否存在该项,存在才可做此设置:

for (int i = 0; i < this.ddl.Items.Count; i++)
{
     if (this.ddl.Items[i].Value.Equals("abc"))
     { this.ddl.Items[i].Selected = true; break; }
}

 

 

4.记录集DataSet里不存在表格却直接引用

当我们将记录集绑定到GridView时,经常用到this.GridView1.DataSource = DataSet1.Tables[0].DefaultView;

但是当DataSet1里根本就不存在数据表时,则必然会引发“未将对象引用设置到对象的实例“异常,解决该类问题是在绑定前判断表格是否存在:

if(DataSet1.Tables.Count > 0)
{this.GridView1.DataSource = DataSet1.Tables[0].DefaultView;}

 

 

5.页面未定义控件,却在程序里直接引用

此种情况不多见,但也偶有发生,一般是修改页面时误操作,例如上例,如果我们不小心把GridView1删除了,则此时再执行

if(DataSet1.Tables.Count > 0)
{this.GridView1.DataSource = DataSet1.Tables[0].DefaultView;}

则定会引发“未将对象引用设置到对象的实例“异常,此时重新添加上GridView1控件即可。


 

阅读更多
个人分类: 资源搜集
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

"未将对象引用设置到对象的实例"异常的几种常见场合 【转载留着查找方面,哈哈】

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭