Viji
@Viji
Associate DevOps Engineer

Корректен ли такой способ обьявления переменной?

IEnumerable<ISomeClass>  mClients = new List<ISomeClass>();


или

List<ISomeClass>  mClients = new List<ISomeClass>();


в чем разница между этими 2-мя переменными? Пришлось использовать первый способ, так как конструктор другого класса, с которым я работаю, требует на вход IEnumerable, но не хочет List<>
  • Вопрос задан
  • 91 просмотр
Решения вопроса 2
VoidVolker
@VoidVolker Куратор тега C#
Dark side eye. А у нас печеньки! А у вас?
IEnumerable - интерфейс, а List - класс, реализующий данный интерфейс. Любой класс может реализовывать несколько интерфейсов. Правильнее объявлять как есть - т.е. List, а там где, где нужен конкретный интерфейс/класс - просто делать каст. Обычно не требуется, т.к. IDE/компилятор еще стадии написания/компиляции кода проверяет наличие нужного интерфейса в передаваемом объекте. Соответственно, если ваш конструктор просит IEnumerable, но не разрешает List - проверяйте точнее, что именно нужно конструктору, т.к. если все правильно делать - то List он должен принимать.
Ответ написан
freeExec
@freeExec
Участник OpenStreetMap
в чем разница между этими 2-мя переменными?

В том, что вы потом не сможете в эту переменную листа добавить элементы, т.к. у IEnumerable нет соответствующих методов.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы