黑马程序员技术交流社区

标题: 未将对象引用设置到对象的实例, [打印本页]

作者: jingzhouheima    时间: 2013-5-10 17:35
标题: 未将对象引用设置到对象的实例,
本帖最后由 jingzhouheima 于 2013-5-12 20:41 编辑

不管用哪一种实例,都报这样的异常。。期待交流。。

断开对象DataSet.png (18.05 KB, 下载次数: 0)

这是出现问题异常

这是出现问题异常

作者: 黑马-雷钊    时间: 2013-5-10 19:53
这种情况到没见过
作者: 许大虾    时间: 2013-5-10 20:10
你可以看看这个~
http://blog.csdn.net/sollion/article/details/5777475
作者: jingzhouheima    时间: 2013-5-10 20:22
黑马-雷钊 发表于 2013-5-10 19:53
这种情况到没见过

谢谢关注
作者: jingzhouheima    时间: 2013-5-10 20:22
许大虾 发表于 2013-5-10 20:10
你可以看看这个~
http://blog.csdn.net/sollion/article/details/5777475

谢了,兄弟。。
作者: 许大虾    时间: 2013-5-10 22:33
jingzhouheima 发表于 2013-5-10 20:22
谢了,兄弟。。

不客气~应该的
作者: 王宝生    时间: 2013-5-11 06:50
   theDataset为null,所以你再他身上调用Tables就会抛出一个NUllReferenceException异常。
  这时候你可能还在设置断点一步步的调试,这里有一个简便的方法可以解决:(哈哈一般人不告诉他)
  以后凡是出现这种情况,你就单击thDataset,然后在弹出的对话框中选择”转到定义处“,这时候就会转到theDataset的定义处,
仔细看看那,她99%没有new。假设他是这样的DataSet theDatase;那么你只需加上一个new就可以了,再或者他可能是这样的DataSet theDataset=someMethod();,这时候你按照刚才的方法转到someMethod的定义处,然后再看看里面有没有new。

总之出现这种情况,就说明这个对象还没有在堆中创建,你只需要创建他就OK了;

未命名.jpg (39.86 KB, 下载次数: 0)

未命名.jpg

作者: 孤帆破浪    时间: 2013-5-11 15:56
类似情况我前一阵子也遇到过,发生这种情况应该是你在调用一个类里面的属性时,没有给它新建一个对象,或者当前对象为null,你先设断点,启动调试观察一下里面的值。
作者: jingzhouheima    时间: 2013-5-11 23:10
王宝生 发表于 2013-5-11 06:50
theDataset为null,所以你再他身上调用Tables就会抛出一个NUllReferenceException异常。
  这时候你可能 ...

private DataSet theDataSet = null;//我事先已经定义了一个全局变量。这样写有错吗??
作者: 宋兴征    时间: 2013-5-11 23:46
"未将对象引用设置到对象的实例"的异常,一般就是该对象为null引起的。
那我们就设断点,看是不是为null,如果为null,根据程序执行顺序,向前再设断点排查,一步一步的找到原因。

作者: 宋兴征    时间: 2013-5-11 23:49
这里的话,DataSet为null
1、看sql语句写的对不对,有没有返回结果;
2、theDataSet 在执行过程中,是否有赋值操作,没有的话当然要报错了;
3、楼下补充 、、:D
作者: jingzhouheima    时间: 2013-5-12 00:02
宋兴征 发表于 2013-5-11 23:49
这里的话,DataSet为null
1、看sql语句写的对不对,有没有返回结果;
2、theDataSet 在执行过程中,是否有 ...

DataSet theDataSet = new DataSet(); //我定义了一个全局的DataSet
page_Load
{  
   ...
   DataColumn[] dc = new DataColumn[1];//实例一个数组,里面只含有1个元素
  adapter.Fill(theDataSet,"userCISP");//填充到DataSet中
...
}
protected void SelectBtn_Click(object sender, EventArgs e)
{
  DataTable dt =  theDataSet.Tables[0];//这里是出现报错的地方
}
作者: 王宝生    时间: 2013-5-12 06:45
jingzhouheima 发表于 2013-5-11 23:10
private DataSet theDataSet = null;//我事先已经定义了一个全局变量。这样写有错吗?? ...

这里你不就没有初始化嘛,直接在构造函数中初始化一下就行了。或者右键,然后选择查找所有引用,肯定没有初始化




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2