Когда использовать IList и когда использовать List - PullRequest
171 голосов
/ 20 августа 2008

Я знаю, что IList - это интерфейс, а List - конкретный тип, но я до сих пор не знаю, когда использовать каждый из них. Что я делаю сейчас, если мне не нужны методы Sort или FindAll, я использую интерфейс. Я прав? Есть ли лучший способ решить, когда использовать интерфейс или конкретный тип?

Ответы [ 12 ]

1 голос
/ 20 августа 2008

Вы должны использовать интерфейс только в том случае, если он вам нужен, например, если ваш список приведен к реализации IList, отличной от List. Это верно, например, когда вы используете NHibernate, который преобразует ILists в объект-мешок NHibernate при получении данных.

Если List - единственная реализация, которую вы когда-либо будете использовать для определенной коллекции, не стесняйтесь объявлять ее как конкретную реализацию List.

1 голос
/ 20 августа 2008

В ситуациях, с которыми я обычно сталкиваюсь, я редко использую IList напрямую.

Обычно я просто использую его как аргумент для метода

void ProcessArrayData(IList almostAnyTypeOfArray)
{
    // Do some stuff with the IList array
}

Это позволит мне выполнять общую обработку практически любого массива в .NET Framework, если только он не использует IEnumerable, а не IList, что иногда случается.

Это действительно зависит от того, какая функциональность вам нужна. Я бы предложил использовать класс List в большинстве случаев. IList лучше всего подходит для случаев, когда вам нужно создать собственный массив, который может иметь некоторые очень специфические правила, которые вы хотите инкапсулировать в коллекцию, чтобы не повторяться, но при этом хотеть, чтобы .NET распознал его как список.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...