星空网 > 软件开发 > ASP.net

未将对象引用到实例

对象为null时调用给对象的属性或方法

“未将对象引用到实例”是很多像我一样的初学者经常遇到的一个问题,常常令人烦恼不已,那么这个问题是怎么发生的呢?先给大家看一张图,我们从这张图入手来分析这个错误造成的原因。

未将对象引用到实例

可能很多人看到这样的代码会觉得可笑:”能写出这样的代码,看来此人的智商已“超越”人类的范畴了!“

但是就是有某些**外穿的超人叔叔经常不间歇性的写出这样的代码、遇到这样的问题。

从这张图上我们很容易看出Too.f1.array[i]是为null的,这时我们调用它的属性或方法是肯定会报错的!那为什么当对象为null时调用它的属性或方**报错呢?

我们都知道数组是引用类型,引用类型的数据值会存放在堆内存中在栈中存储的只是一串内存地址如图所示:

未将对象引用到实例

通过这张图我们可以看到它的属性是存放在堆内存中的,而对象为null就是指该对象没有在堆内存中开辟空间,也就没办法通过栈内存访问到存放在堆内存中的属性,所以系统运行时就会提示错误。

引用类型数据赋给另一个同类型引用类型数据所带来的问题

我们再来看一张图:

未将对象引用到实例

初看这多代码好像并没有什么“不妥”,语法上也没报错!但是运行时却出现了未将对象引用到实例的问题附图一张:

未将对象引用到实例

这又是怎么回事呢?我们前面说过栈内存中存储的是一串堆内存的内存地址。而sb=txt只是将数组txt在堆内存中的内存地址赋给了数组sb也就是说数组txt和数组sb在栈内存中存储的堆内存的内存地址是一样的,而txt[0]=null也就是将txt【0】对应的在堆内存中的空间给删除,而数组txt和数组sb是共用一样的堆内存中的内存地址所以数组sb【0】也没有对应的堆内存的内存空间所以会在运行时报错,原理请参照对象为null时调用给对象的属性或方法

谨以此文献给超越人类的乐乐同志!




原标题:未将对象引用到实例

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

段林霄:https://www.goluckyvip.com/tag/30775.html
段铺链接:https://www.goluckyvip.com/tag/30776.html
段鑫龙:https://www.goluckyvip.com/tag/30777.html
段志云:https://www.goluckyvip.com/tag/30778.html
断奶的猫:https://www.goluckyvip.com/tag/30779.html
截至6月11日:https://www.goluckyvip.com/tag/3078.html
七月份适合去日本旅游吗 7月份去日本哪里好玩:https://www.vstour.cn/a/363192.html
凤岗汽车站到松山湖风景区 松岗汽车站到凤凰山怎么坐车:https://www.vstour.cn/a/363193.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流