您现在的地位: 365体育备用网址 > 365学习 > VS2015 C#未将对象引用设置到对象的实例

VS2015 C#未将对象引用设置到对象的实例_365体育备用网址官网资讯

您现在的地位: 365体育备用网址 > 365学习 > VS2015 C#未将对象引用设置到对象的实例

VS2015 C#未将对象引用设置到对象的实例

文章来源:365jz.com     点击数:184    更新时间:2018-05-16 14:23   参与评论

  “未将对象引用设置到对象的实例”相信这个问题只要是写过代码的不论技术高低都会遇到过,这句话的意义就是说我们在引用对象之前没有对对象进行初始化。一般是由于我们引用的对象为空时造成的。经常会在我们我们传递参数的时刻出现这样的问题,这时刻我们就要考虑我们调用的参数是否为空了。

  下面是我自己遇到的问题:

  
 

 我是在三层架构中B层调用接口的时刻出现的问题,自己分析是因为被调用的接口没有被胜利创建,因为我是通过抽象工厂创建接口的。失误点如下:

  

  

  代码中的类名跟实际类名不同导致的,这里代码中多了一个1,虽然是粗心出的错,也要把这种失误的原理搞清楚。这次可能只是类名不同,下次就不肯定了,下面是我从网上找到的其余可能导致这种失误的原因,希望你能够对您有所帮助。

  1、ViewState对象为Null。

  2、DateSet为空。

  3、SQL语句或Datebase的原因导致DataReader空。

  4、声明字符串变量时未赋空值就应用变量。

  5、未用new初始化对象。

  6、Session对象为空。

  7、对控件赋文本值时,值不存在。

  8、使用Request.QueryString()时,所猎取的对象不存在,或在值为空时未赋初始值。

  9、使用FindControl时,控件不存在却没有做预处置。

 

  10、反复定义造成未将对象引用设置到对象的实例错。


一、网络上的一般说法

1、ViewState 对象为Null。
2、DateSet 空。
3、sql语句或Datebase的原因导致DataReader空。
4、声明字符串变量时未赋空值就应用变量。
5、未用new初始化对象。
6、Session对象为空。
7、对控件赋文本值时,值不存在。
8、使用Request.QueryString()时,所猎取的对象不存在,或在值为空时未赋初始值。
9、使用FindControl时,控件不存在却没有做预处置。
10、反复定义造成未将对象引用设置到对象的实例失误.

 

二、 (1)所设置的变量为空值或没有取到值,一般出现在传递参数的时刻出现这个问题,也会在使用DataGrid或gridview或datalist等数据控件时出现.

  (2)控件名称与codebehind里面的没有对应

  (3)未用new初始化对象

  (4)在程序中所引用的控件不存在

  解决方法:

  (1)使用try..catch...finally捕捉失误,或直接用response.write()输出所取的变量值

  (2)察看代码中是否存在未初始化的变量

 

三、SqlConnection.Open   未将对象引用设置到对象的实例

在使用VS2003开拓 ASP.NET程序时刻 有时刻操作 SqlConnection对象的Open()方法时刻会出现

未将对象引用设置到对象的实例。

说明: 执行当前 Web 要求期间,出现未处置的异常。请检讨堆栈跟踪信息,以了解有关该失误以及代码中导致失误的出处的详细信息。

异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

源失误: 
。。。。

conn.Open();

......

跟踪调试也肯定能够确定 对conn进行new 操作 但是程序经常在这个地方报错,但是有时刻重启服务器或者重启IIS有能正常使用了。 怎么调试也找不到问题  那么这个时刻可能是 你本机上安装的.NET FRAMEEWORK 框架有问题,可能没有没有安装SP1.1补丁  
需要打NET FRAMEEWORK1.1 SP1的补丁,到微软官方网站下载安装后就好了。

 

四、一般出现NullReferenceException异常的我个人总结有以下情况:

1、对象所在的命名空间没有引用
2、对象没有实例化
3、出现异常,实例化失败对象为 null

 

 五、IIS 扛不住的时刻,也会出现上面的失误。

当应用程序的用户访问量超越它能承受的范围之后,就会出错。
改善你的程序,使用缓存,尽量减少与数据库交互的次数。

 

六、我碰到的问题是,无意重置了DataSet引用,后出现这个问题,请大家好好查查自己的代码,是不是在其余地方重新引用了,在我的程序中DataSet被设置成全局对象。

 

七、当你发现一切的方法不行时,打上.netframework的补丁

 

、我出现这个失误,仅仅因为网站里面DAL的dll文件失效,业务层实例化不了IDAL里面的对象 

但也浪费了一下午的时间在调代码上

 

九、为每个可疑的地方添加监视,起初以为是sql语句写错了,查了几遍,换用sql语句还是报同样的失误。依据google出来的结果,提到对象重定义会引起这样的结果。依据这一提示,替换掉页面级全局对象,总算搞定了。

       class DBOper{
            /*构造函数没有函数体
             *
             *c#写的 一系列对数据库操作方法
             *
             *
       }
       最初为了省事,尽量少声明对象,只在全局声明了一个private DBOper db=new DBOper(),在不同方法里面调用该对象的方法,以幸免为其定义而造成内存浪费。以后代码重构,在编译的时刻并未报错。但是当运行的时刻,就出现” NullReferenceException: 未将对象引用设置到对象的实例“。结果就因它而搞了几个小时。以后依据google的结果,将不同方法中使用到的DBOper对象一一重定义为局部变量(一个方法里面只定义一个DBOper对象,多次调用其方法均正常),去掉全局的private变量。再运行的时刻就正常了。

如对本文有疑问,请提交到交流豪彩娱乐网址,广大热心网友会为你解答!! 点击进入豪彩娱乐网址


公布评论 (184人察看0条评论)
请自觉遵守互联网相关的政策法规,严禁公布色情、暴力、反动的言论。
用户名: 验证码: 点击我更换尊龙娱乐城网站
最新评论
------分隔线----------------------------
条评论
Sitemap