Добрый день. Возник вопрос следующего характера: согласно офф. документации с MSDN
-сам конструктор имеет следующий вид:
List<T>(IEnumerable<T>)
- т.е. список я параметризую неким параметром T, а в качестве аргумента могу передать элементы из указанной коллекции:
Инициализирует новый экземпляр List, который содержит элементы, скопированные из указанной коллекции, и имеет емкость, достаточную для размещения всех скопированных элементов.
И как я понимаю параметр в IEnumerable<T> может быть отличным от List<T>
Тогда вопрос, почему возникает такая ошибка:
public class ParticleGenericClass<Particle> : IEnumerable
{
IEnumerator IEnumerable.GetEnumerator()
{
throw new NotImplementedException();
}
ParticleGenericClass<Particle> Pg = new ParticleGenericClass<Particle>();
Particles = new List<int>(Pg) ;
ошибка возникает на строке:
Particles = new List<int>(Pg) ;
Аргумент 1: не удается преобразовать из "ParticleGenericClass<UnityEngine.Particle>" в "System.Collections.Generic.IEnumerable<int>".
Upd: как я понял необходимо при реализации данного интерфейса сделать так:
public class ParticleGenericClass<Particle> : IEnumerable<Particle>
{
IEnumerator<Particle> IEnumerable<Particle>.GetEnumerator()
{
throw new NotImplementedException();
}
IEnumerator IEnumerable.GetEnumerator()
{
throw new NotImplementedException();
}
}
Потому что ваш класс ParticleGenericClass<Particle> : IEnumerable реализует IEnumerable, но не IEnumerable<Particle>.
А для List<Particle> нужно IEnumerable<Particle>.
То, что сам ParticleGenericClass является обобщённым классом с параметром Particle, не имеет значения. Нужна реализация (прямо или косвенно) IEnumerable<Particle>.
Проще всего, думаю, просто реализовать IEnumerable<Particle> в вашем классе ParticleGenericClass<Particle>.
Окей, новая проблема в том, что у вас неправильный тип generic-параметра.
Конструктор List<T> описан как принимающий параметр типа IEnumerable<T>. Видите, и там, и там T.
T не обозначает «короче какой-то generic-параметр». Как и с аргументами функций, одно и то же имя означает одну и ту же сущность. То есть, последовательность должна иметь именно тот же тип данных, что и список. А вы из последовательности Particle'ов пытаетесь построить список int'ов. Подумайте сами: каким образом компилятор узнает, как из Particle построить int?
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости