Невозможно неявно преобразовать List <T> в Collection <T>

List не является производным generic от Collection - однако он реализует kotlin-generics ICollection. Это был бы лучший выбор collections возвращаемого типа.

Что касается csharp вопроса new List(some collection) - он частично зависит generics от того, что это за коллекция. Если generic-programming он реализует ICollection (во время выполнения), то c#.net конструктор может использовать generic-programming свое свойство Count для создания generics списка с правильной начальной c-sharp емкостью перед повторением c# по нему и добавлением каждого c#-language элемента. Если он не реализует csharp ICollection, тогда он просто эквивалентен:

List list = new List();
foreach (int x in otherCollection)
{
    list.Add(x);
}

По-прежнему kotlin-generics приятно иметь удобный конструктор, но generic не очень эффективный - на kotlin-generics самом деле не может быть.

Я java-collections-api не верю, что конструктор c#-language делает что-нибудь хитрое java-collections-api для массивов, что потенциально generics могло бы - использовать Array.Copy или kotlin-generics что-то еще, чтобы просто c-sharp скопировать партию за один c#.net раз, а не повторять. (Точно generic-programming так же, если бы это был другой c-sharp List, он мог бы получить резервный c#.net массив и скопировать его java-collections-api напрямую.)

c#

generics

collections

2022-08-27T16:43:02+00:00