Ошибка преобразования типа C # несмотря на общее ограничение

Почему, с общим ограничением на параметр типа T класса P, равным «должен наследоваться от A», первый вызов выполнен успешно, но второй вызов завершился неудачно с ошибкой преобразования типа, подробно описанной в комментарии:

abstract class A { }

static class S
{
    public static void DoFirst(A argument) { }
    public static void DoSecond(ICollection<A> argument) { }
}

static class P<T>
    where T : A, new()
{
    static void Do()
    {
        S.DoFirst(new T());             // this call is OK

        S.DoSecond(new List<T>());      // this call won't compile with:

        /* cannot convert from 'System.Collections.Generic.List<T>'
           to 'System.Collections.Generic.ICollection<A>' */
    }
}

Не должно ли общее ограничение гарантировать, чтоList<T> is в самом делеICollection<A>?

Ответы на вопрос(3)

Ваш ответ на вопрос