次のような単純なクラスがあるとします。
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キーワードを使用する場合のように)変数への参照を保存する方法はありますか? ? ( 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?
}