我试图设计一个类,它可以更新对一个对象(类之外)的引用销毁。在c中存储引用#
所以,基本上你创建了这个对象的一个实例,并传递给它一个引用类型(以任何方式,构造函数等),然后破坏对象原始引用已经改变为由对象创建的引用。
如果我通过引用传递引用(比如在构造中),我无法想出一个方法来存储此引用(作为引用)以供析构函数更新它吗? 例如(伪):
class Updater
{
object privateReference;
public Updater(ref object externalReference)
{
privateReference = externalReference; //is privateReference now a new reference to the original object?
}
~Updater()
{
privateReference = new object(); //therefore this isn't 'repointing' the externalReference
}
}
这里的关键是我并不想发生变异从这个类我想原来的“外部”对象“重新指向”它,或者如果你愿意初始化它。
如果你正在销毁你的物体,为什么'重新命名'一个内部字段也会被销毁呢? – Oded 2009-12-08 11:37:44
即时通讯不试图重新命名内部领域,这是重点。我试图重新指出它指向的东西......如果这是有道理的。 – 2009-12-08 11:40:24
将一个字段(或任何其他基于堆的存储,如数组元素)存储到一个变量的ref是绝对合法的。原因是:ref可能是堆栈中一个局部变量的引用,它的生存期比存放ref的存储区更短,从而导致ref无效。我们可以(1)使裁判不安全和脆弱,比如C++,或者(2)限制裁判的存储并保持裁判总是安全的,或者(3)从不在堆叠中存储东西。我们选择了(2)。 – 2009-12-08 14:42:25