Проблема возвращения ссылки на массив в C#
Подскажите, пожалуйста, как корректно передавать ссылку на массив (например список) из класса в класс. Например: есть список в Class1, неважно чего, например объектов некого класса3. Мне нужно использовать и редактировать его в Class2.
Ниже примеры, как пытаюсь делать - передаю через методы или через public IEnumerable. Как правильно?
1.
class Class1
{
private List<Class3> _list = new List<Class3>(5);
// .....
public IEnumerable<Class3> GetList()
{
return _list.AsEnumerable();
}
}
class Class1
{
private List<Class3> _list = new List<Class3> (5);
// .....
public List<Class3> GetList()
{
return _list;
}
}
class Class1
{
private List<Class3> _list = new List<Class3> (5);
public IEnumerable<Class3> GetList
{
get { return _list.AsEnumerable(); }
}
// .....
}
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
Через конструктор
class Class1
{
private List<Class3> _list = new List<Class3>();
private void SomeMethod()
{
Class2 class2 = new Class2(_list);
}
}
class Class2
{
private List<Class3> _list;
public Class2(List<Class3> list)
{
_list = list;
}
}
Через поле или свойство, покажу свойство
class Class1
{
private List<Class3> _list = new List<Class3>();
private void SomeMethod()
{
Class2 class2 = new Class2();
class2.List = _list;
// или так
// Class2 class2 = new Class2() { List = _list };
}
}
class Class2
{
public List<Class3> List { get; set; }
}
Конечно, вы таким образом не сможете переприсвоить _list внутри Class1 из какого-то метода Class2, но элементы изменять сможете.
Если вам надо вернуть новый список из Class2 в Class1, можно использовать возвращаемое значение у метода.
class Class1
{
private List<Class3> _list;
private void SomeMethod()
{
Class2 class2 = new Class2();
_list = class2.SomeMethod2();
}
}
class Class2
{
public List<Class3> SomeMethod2()
{
List<Class3> list = new List<Class3>();
//...
return list;
}
}