首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >引用类型

引用类型
EN

Stack Overflow用户
提问于 2011-05-16 16:20:51
回答 4查看 91关注 0票数 6
代码语言:javascript
复制
 var a = MyClassInstance;
    MyClassInstance = null;
    //if (a !=null){ //why }

我认为a指向MyClassInstance并且MyClassInstance等于null,那么a也必须等于null。但是a不是空的,我不明白为什么。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-05-16 16:25:50

变量a是一个引用,所以它保存的值是某个对象的“位置”。MyClassInstance也是一个参考。通过设置a = MyClassInstance,它们都指向同一个实例。将MyClassInstance设置为null仅影响该引用。它不会影响对象本身,也不会影响任何其他引用。

票数 4
EN

Stack Overflow用户

发布于 2011-05-16 16:23:55

aMyClassInstance是对对象的引用。

更改一个引用并不会更改另一个引用。

代码语言:javascript
复制
var a = MyClassInstance; // Both references point to the same object
MyClassInstance = null;  // MyClassInstance now points to null, a is not affected
票数 5
EN

Stack Overflow用户

发布于 2011-05-16 16:27:23

因为您将null赋值给变量MyClassInstance,该变量刚刚引用了位于堆上的实际实例。您不会以任何方式接触实际的类实例。

实际上,您不能直接释放类实例占用的内存;这就是垃圾收集器的用途。它检查是否有任何对实例的引用(想想指针,但没有),如果没有,则从内存中删除/收集对象。

也许这让它变得更清晰:http://en.csharp-online.net/Value_vs_Reference

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6014723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档