StudentSC Ответов: 1

Как не удается имплицитно ввести ienumeration в строку списка


Ienumerable<string> t;
Public List<string> folder=новый список<string>();

Папка=t;

Отправить.FSend(path,t,”error”); // t-это ошибка и не может быть имплицитной ошибкой.

Как решить эту проблему.

Что я уже пробовал:

Ienumerable<string> t;
Public List<string> folder=new List<string>();

Folder=t;

Send.FSend(path,t,”error”); // t is error and cannot implicity error

1 Ответов

Рейтинг:
1

OriginalGriff

t это IEnumerable<T> не List<T>
И folder может содержать только списки, которые являются "надмножеством" IEnumerable.

Вы можете сделать это наоборот:

IEnumerable<string> t;
List<string> folder = new List<string>();
t = folder;
Потому что каждый список неисчислим - но вы не можете сделать это по-другому.

Подумайте об этом: что бы произошло, если бы вы могли? Когда вы попытаетесь использовать список, специфических функций списка (индексирование, добавление и удаление элементов и т. д.) там не будет, поэтому код будет неудачным.

Вы можете сделать это с помощью метода Linq для преобразования IEnumerable в список:
IEnumerable<string> t = ...;
List<string> folder = t.ToList();
Но это создает новый объект (список), который содержит те же элементы, что и исходный IEnumerable, но который не "прикреплен" к нему, поэтому изменения в одном не повлияют на другой.