Задать вопрос
Viji
@Viji
DevOps Engineer

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

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


или

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


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

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

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

Похожие вопросы