Передача List<> по значению
От: Invisible_Kid  
Дата: 16.11.07 23:05
Оценка:
Доброго времени суток.
Возникла одна проблемка с Листами. Мне необходимо передать Лист своих классов методу другого класса таким образом, чтобы значение элементов внутри метода менялось, а снаружи оставалось таким же, то есть реализовать класическую передачу по значению, но все мои попытки как-либо сделать это не увенчались успехом: постоянно переходит передача по ссылке.
Приведу простой пример. Консольное приложение.
Есть какой-то класс:
class Class4List
{
    public int var;
}


И есть другой класс, в метод которого и будет передаваться Лист предыдущих классов:
class Class4Method
{
    public void changeVar(List<Class4List> c4l)
    {
        c4l[0].var = 1;
    }
}


Мэйн:
static void Main(string[] args)
{
    List<Class4List> test = new List<Class4List>(); //создаём Лист наших классов
    Class4List qwer = new Class4List(); //создаём экземпляр такого же класса
    qwer.var = 25; //в нём присваиваем какое-то значение члену класса
    test.Add(qwer); //добавляем в наш Лист
    Class4Method tst = new Class4Method(); //создаём экземпляр класса с методом, которому нужен Лист
    tst.changeVar(new List<Class4List>(test)); //и вызываем этот метод, передавая ему копию нашего Листа
}

В результате и у test[0].var будет значение 1, и у qwer.var тоже, что говорит о том, что значение элементов Листа передаётся по ссылке. Как передать их по значению?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.