Когда использовать IList и когда использовать List

Рекомендации Microsoft, проверенные c-sharp FxCop, не рекомендуют использовать dotnet List в общедоступных csharp API — отдайте предпочтение .net-framework IList.

Между прочим, теперь dot-net я почти всегда объявляю одномерные csharp массивы как IList, что c#-language означает, что я могу последовательно c-sharp использовать свойство IList.Count, а c#.net не Array.Length. Например:

public interface IMyApi
{
    IList GetReadOnlyValues();
}

public class MyApiImplementation : IMyApi
{
    public IList GetReadOnlyValues()
    {
        List myList = new List();
        ... populate list
        return myList.AsReadOnly();
    }
}
public class MyMockApiImplementationForUnitTests : IMyApi
{
    public IList GetReadOnlyValues()
    {
        IList testValues = new int[] { 1, 2, 3 };
        return testValues;
    }
}

c#

.net

2022-11-10T11:31:20+00:00