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

在.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控件即可。


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值