我一直覺得Delphi中的對象實際上是對內存位置的引用,而我想象的內存位置則是作爲指針變量存儲的。爲什麼TValue.Make需要一個指向對象引用的指針?
現在,我想從一個對象中製作TValue。考慮到這一點:
TValue.Make(AObject, TypeInfo(TMyObject), val);
其中val: TValue
。這不起作用。事實上,隨後使用val
將導致訪問衝突。但是,如果我們使用地址運算符,如下所示:
TValue.Make(@AObject, TypeInfo(TMyObject), val);
一切都很好。對我而言,這是意想不到的,因爲我認爲AObject實際上是一個指針。我錯了,還是這是一個與TValue.Make方法的怪癖?有人請賜教嗎?
非常感謝和簡潔的解釋! – conciliator
微妙而基本的...... ;-) +1 –