Перезапись объекта - PullRequest
0 голосов
/ 08 июля 2011

У меня есть ситуация, когда я получаю ссылку на объект, который я хотел бы перезаписать другим объектом того же типа. По конструкции я знаю, что объекты одного типа. У меня нет доступа к родительскому объекту в этой функции.

Объект данных определяется следующим образом:

    Class DataObject
    {
         public List<int> Stuff = new List<int>();
    }

Тогда есть метод

    void DoStuff(object obj)
    {
         // At this point I know that obj is List<int>
         // Create new object from some source
         var newList = new List<int>();

         // Here I would like to make the passed object the new object
         (the pointer of obj) = (the pointer of newlist)
    }

Я не знаю, возможно ли это. Это то, против чего я уже несколько часов бьюсь головой, и мой мозг, похоже, перестал работать.

Заранее спасибо

Юхан

Ответы [ 4 ]

0 голосов
/ 08 июля 2011

obj = newList какая разница, если указатель obj будет изменен на newList или указатель newList будет изменен на obj?

0 голосов
/ 08 июля 2011

Передать объект по ссылке :

void DoStuff(ref DataObject dataObject)
{
    dataObject = ...;
}

ref object здесь не разрешено.

0 голосов
/ 08 июля 2011

Нет, это невозможно с вашим текущим кодом - ссылка передается по значению и, таким образом, полностью не зависит от того, как вы к ней изначально обращались.Даже если вы изменили obj на параметр ref, вы не сможете вызывать метод с ref Stuff, потому что типы будут неправильными.Вы могли бы потенциально сделать это с помощью универсального параметра:

void DoStuff<T>(ref T obj)
{
    object newList = new List<int>();
    obj = (T) newList;
}

Это довольно ужасно, хотя.сделайте это - если вы сможете объяснить больше о картине, мы можем помочь вам больше.

0 голосов
/ 08 июля 2011

Вы можете использовать функцию Clone, но взгляните на следующую Stackoverflow ссылку, которая имеет хороший метод для клонирования объектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...