我試圖設計一個類,它可以更新對一個對象(類之外)的引用銷燬。在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