Скажем, у меня есть простой класс, подобный этому:
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;
}
}
Этот класс сохраняет элемент, данный его конструктору, каким бы ни был element .Однако «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?
}