說我有一個簡單的類是這樣的:使用ref關鍵字保存,以便以後使用對象引用
public class ReferenceChanger<T>
{
public T SavedElement { get; private set; }
public ReferenceChanger(T elementToSave)
{
SavedElement = elementToSave;
}
// This method would change the original variable (given as a constructor argument)
public void SetNewReference(T newElement)
{
SavedElement = newElement;
}
}
本級的撲救給它的構造元素,無論元素是。然而,「SavedElement」(它的後臺字段)是對實例創建時給定的對象的引用。
有沒有辦法保存參考變量(如使用ref關鍵字),因此,如果原始項目傳遞給構造變化,SavedElement會自動反映這種變化,彷彿該對象已通過ref關鍵字? (即使我使用裁判關鍵字,我將無法保存參考的方式。)
更新,使其意圖更清晰:
public class ExampleClass
{
public List<int> Numbers { get; set; }
}
public static void Main()
{
ExampleClass temp = new ExampleClass();
temp.Numbers = new List<int>() { 1, 2, 3 };
ReferenceChanger<List<int>> changer = new ReferenceChanger<List<int>>(temp.Numbers);
// Here, a reference to the List<int> instance (containing 1,2,3) is stored in changer's SavedElement
// Then I do this:
changer.SetNewReference(new List<int>() { 5, 6, 7 });
// Now, only changer's SavedElement was changed, but temp's property Numbers was not changed.
// Is there a way to change the temp's property Numbers from the changer?
}
看到類是自動引用類型,傳遞給你的ctor的對象中的變化應該反映在你的SavedElement中,因爲它只是引用該對象,它不是通過值傳遞,而是通過引用。 –
您是否想要在調用'SetNewReference'之前需要使用'SavedElement'的代碼來隨後對新版本的'SavedElement'執行操作? – Reddog
如果是這樣,只需將整個ReferenceChanger實例傳遞給該操作,並在需要時調用SavedElement。它將始終使用「最新」參考。 – Reddog