Доброго времени суток.
Возникла одна проблемка с Листами. Мне необходимо передать Лист своих классов методу другого класса таким образом, чтобы значение элементов внутри метода менялось, а снаружи оставалось таким же, то есть реализовать класическую передачу по значению, но все мои попытки как-либо сделать это не увенчались успехом: постоянно переходит передача по ссылке.
Приведу простой пример. Консольное приложение.
Есть какой-то класс:
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 тоже, что говорит о том, что значение элементов Листа передаётся по ссылке. Как передать их по значению?