Size: a a a

2020 March 26

V

Vyacheslav in pro.net
Vladimir Shchur
ну не совсем) это ты описал SRTP) а тайпклассы это когда ты можешь дженерик юзать тип не указывая дженерик параметра, например List<> передавать, и типа такого кода иметь
var allList = new List<List<>();
allList.Add(new List<int>());
allList.Add(new List<bool>());
если такое разрешить, что какой тип вернёт allList[0]?
источник

AH

Ayrat Hudaygulov in pro.net
И что самое главное, эти тайпклассы можно запаковать в нугет и все кто такой нугет поставят увидят инстансы твоих тайпклассов и тоже будут видеть твою наркоманию
источник

V

Vyacheslav in pro.net
Vyacheslav
если такое разрешить, что какой тип вернёт allList[0]?
в c# у переменных тип статический (кроме dynamic)
источник

VS

Vladimir Shchur in pro.net
Ayrat Hudaygulov
Это хайер кайндед тайпс
блин, точно, думаю про одно, пишу другое)
источник

VS

Vasily Shapenko in pro.net
Пора санитаров вызывать, день откровений
источник

AH

Ayrat Hudaygulov in pro.net
Vyacheslav
в c# у переменных тип статический (кроме dynamic)
Ты не поверишь, но хкт можно делать в статике, но не с нынешним рантаймом. щас придёт Кирилл и скажет что я неправ
источник

VS

Vladimir Shchur in pro.net
Vyacheslav
если такое разрешить, что какой тип вернёт allList[0]?
как что, должен вернуть List<> :)
источник

V

Vyacheslav in pro.net
Vladimir Shchur
как что, должен вернуть List<> :)
а теперь выполняем allList[0][0]
источник

V

Vyacheslav in pro.net
Ivan Balanar
var x = new List<List<object>>();
x.Add(new List<string>()); <— cannot convert from... to...
Кстати, можно ещё
var x = new List<IEnumerable>();
x.Add(new List<string>());
источник

VS

Vladimir Shchur in pro.net
я не уверен, как это должно работать) мб недоступно быть) но что должно быть возможно, например вызвать allList[0].Count
источник

IB

Ivan Balanar in pro.net
Vyacheslav
Кстати, можно ещё
var x = new List<IEnumerable>();
x.Add(new List<string>());
это уже приведение к интерфейсу, это другое
источник

V

Vyacheslav in pro.net
Vladimir Shchur
я не уверен, как это должно работать) мб недоступно быть) но что должно быть возможно, например вызвать allList[0].Count
var x = new List<ICollection>();
x.Add(new List<string>());
источник

V

Vyacheslav in pro.net
x[0].Count
источник

VS

Vladimir Shchur in pro.net
ты ограничил тут ICollection, а хочу иметь доступ ко всем методам и функциям надо листом
источник

VS

Vladimir Shchur in pro.net
IList небось дженерик, да?)
источник

VS

Vladimir Shchur in pro.net
а кстати как и ICollection так что пример выше невалиден
источник

VS

Vladimir Shchur in pro.net
а нет, вру, есть и недженерик версии, но там все внутренности наверное к обджекту закастуются, хз
источник

AH

Ayrat Hudaygulov in pro.net
Ну вообще пример выше не супер валидный, там через обычные типы все должно выражаться

List<List<T>>, где T...
Пример выше был про гетерогенные списки
источник

AH

Ayrat Hudaygulov in pro.net
А зачем нужны хкт можно понять если посмотреть исходники System.Linq
источник

VS

Vladimir Shchur in pro.net
Vyacheslav
а теперь выполняем allList[0][0]
кстати, подумал что не обязательно запрещать, просто тип результата не известен, например ничто не мешает такую функцию написать
? (List<?> l) => l[0]
источник