未将对象引用设置到对象的实例原因分析及解决方法
2014-11-13 13:14:39 By: shinyuu
System.NullReferenceException: 未将对象引用设置到对象的实例异常是在C#程序里面、有时候也会抛: Object reference not set to an instance of an object、一般情况是使用NULL的对象超成的、一般来说只要打上断点调试一下就可以发现是那个变量或对象为NULL、下面我把抛出这个异常最常见的情况说明一下、出现“未将对象引用设置到对象的实例”错误、一般是下面的原因
1、ViewState对象为Null
2、DateSet为空
3、sql语句或Datebase的原因导致DataReader空
4、声明字符串变量时未赋空值就应用变量
5、未用new初始化对象
6、Session对象为空
7、对控件赋文本值时、值不存在
8、使用Request.QueryString()时、所获取的对象不存在、或在值为空时未赋初始值
9、使用FindControl时、控件不存在却没有做预处理
10、重复定义造成未将对象引用设置到对象的实例错误
解决方法一
重复定义造成未将对象引用设置到对象的实例错误 一般在C#中造成“未将对象引用设置到对象的实例”错误都是控件名称与codebehind里面的没有对应、对于初学编程的人、而在编码中重复定义也会造成这种问题的产生
事例代码
namespaceweste{ public class study:System.Web.UI.Page{ publicstring[]c; privatevoidPage_Load(objectsender,System.EventArgse){ aaa(); bbb(); } privatevoidaaa(){ string[] c = new string[3]; //c=new string[3]; c[0]="我们"; c[1]="西部"; c[2]="学习"; } privatevoidbbb(){ Response.Write(c[0] c[1] c[2]); } #regionWeb窗体设计器生成的代码 override protectedvoidOnInit(EventArgse){ InitializeComponent(); base.OnInit(e); } privatevoidInitializeComponent(){ this.Load = newSystem.EventHandler(this.Page_Load); } #endregion } }
运行后会我们发现、会有以下错误产生: 异常详细信息:System.NullReferenceException:未将对象引用设置到对象的实例
privatevoid bbb(){ Response.Write(c[0] c[1] c[2]); }
很多初学者都会有疑问:我已经定义了变量publicstring[]c、而且也进行了实例化string[]c=newstring[3]、但是为什么在调用数组c的时候还会报“未将对象引用设置到对象的实例”的错误呢?
问题出在string[]c=newstring[3]这里、在前面已经将数组c定义后、在函数aaa()中再次将数组定义、造成前面定义的数组不能实例化、只需要将string[]c=newstring[3]修改成c=newstring[3]即可
解决方法二
空对象引用导致错误
1、控件不存在
2、执行权限不够、加ASPNET和EVETRYONE所有权限
2.1、ViewState对象为Unll
2.2、DateSet空
3、sql语句或Datebase的原因导致DataReader空
4、声明字符串变量时未赋空值就应用变量
5、未用new初始化对象
6、Session对象为空
通过以上的检查一般情况都会解决这个问题的、大家在写代码的时候多注意一下就可以规避这个问题
若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力
想获取DD博客最新代码、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)
或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)
如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教
为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)
感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛