|
Поясните с классами в C#
|
|||
---|---|---|---|
#18+
может ошибся веткой, звиняйте... Почему во втором случае q всегда null? и как можно скастить IEnumerable<Human> в IEnumerable<Boy>? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2014, 10:06 |
|
Поясните с классами в C#
|
|||
---|---|---|---|
#18+
Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2014, 10:57 |
|
Поясните с классами в C#
|
|||
---|---|---|---|
#18+
Shocker.Pro, Вы вообще поняли, что предложили? Как только ТС дёрнет полученный энумератор, так сразу получит InvalidCastException. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2014, 11:08 |
|
Поясните с классами в C#
|
|||
---|---|---|---|
#18+
Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2014, 11:09 |
|
Поясните с классами в C#
|
|||
---|---|---|---|
#18+
Алексей К Код: c# 1.
Ещё один советчик Вы вообще обратили внимание на то, что Boy - это наследник от Human? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2014, 11:14 |
|
Поясните с классами в C#
|
|||
---|---|---|---|
#18+
Если бы у ТС внутри метода GetHumans() коллекция наполнялась экземплярами класса Boy, то работало бы преобразование HumanServices.GetHumans() as IEnumerable<Boy>. Но as возрашает null , следовательно преобразование не возможно. Следовательно (IEnumerable<Boy>)HumanServices.GetHumans() , HumanServices.GetHumans().Select(n => (Boy)n) и HumanServices.GetHumans().Cast<Boy>() приведут к исключению. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2014, 11:21 |
|
Поясните с классами в C#
|
|||
---|---|---|---|
#18+
Да, не прав, ТС ведь скрыл реализацию получения IEnumerable<Human> .... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2014, 11:35 |
|
Поясните с классами в C#
|
|||
---|---|---|---|
#18+
Shocker.ProДа, не прав, ТС ведь скрыл реализацию получения IEnumerable<Human> ....Ещё раз: 16472684 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2014, 11:36 |
|
Поясните с классами в C#
|
|||
---|---|---|---|
#18+
skyANAShocker.ProДа, не прав, ТС ведь скрыл реализацию получения IEnumerable<Human> ....Ещё раз: 16472684 имел ввиду, что Я не прав )) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2014, 11:37 |
|
Поясните с классами в C#
|
|||
---|---|---|---|
#18+
Shocker.ProskyANAпропущено... Ещё раз: 16472684 имел ввиду, что Я не прав ))А я имел ввиду, что не важно то, что ТС скрыл реализацию. Не катит это за отмазу ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2014, 11:39 |
|
Поясните с классами в C#
|
|||
---|---|---|---|
#18+
Cheerful CalfПочему во втором случае q всегда null? потому что в памяти хранятся ссылки на объекты типа Human, а это не Boy Cheerful Calfи как можно скастить IEnumerable<Human> в IEnumerable<Boy>? никак, из большой матрешки Boy можно достать меньшую матрешку Human, но не наоборот если хочешь, чтоб заработало - надо чтоб HumanServices.GetHumans() возвращал Boy ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2014, 12:06 |
|
Поясните с классами в C#
|
|||
---|---|---|---|
#18+
что-то в этом направлении может быть? Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2014, 12:31 |
|
Поясните с классами в C#
|
|||
---|---|---|---|
#18+
Попахивает ковариантностью дженериков. Код: c# 1. 2.
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
Код: c# 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2014, 15:02 |
|
Поясните с классами в C#
|
|||
---|---|---|---|
#18+
МСУ, к чему ты это всё написал? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2014, 16:35 |
|
Поясните с классами в C#
|
|||
---|---|---|---|
#18+
skyANAМСУ, к чему ты это всё написал? К знаниям. А что? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2014, 16:53 |
|
Поясните с классами в C#
|
|||
---|---|---|---|
#18+
skyANAМСУ, к чему ты это всё написал? А именно, как сделать каст IEnumerable<T> as IEnumerable<M>. Именно это написано в начальном вопросе. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2014, 16:54 |
|
Поясните с классами в C#
|
|||
---|---|---|---|
#18+
МСУ, ну и как же ТСу сделать каст IEnumerable<Human> as IEnumerable<Boy>? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2014, 17:56 |
|
Поясните с классами в C#
|
|||
---|---|---|---|
#18+
может свой конвертер? написать пару строк кода.. Код: c# 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2014, 18:00 |
|
Поясните с классами в C#
|
|||
---|---|---|---|
#18+
skyANAАлексей К Код: c# 1.
Ещё один советчик Вы вообще обратили внимание на то, что Boy - это наследник от Human?Может GetHumans возвращает множество Boy несмотря на то, что имеет тип результата IEnumerable<Human>. Иначе зачем топикстартеру задавать этот вопрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2014, 18:25 |
|
Поясните с классами в C#
|
|||
---|---|---|---|
#18+
Где-то в степиможет свой конвертер? написать пару строк кода..Да зачем свой? Есть для этого готовое либки (AutoMapper что ли...) как-раз для того чтобы кастить Human в Boy, который унаследован от класса Human (создает объект нужного типа и копирует все подходящие свойства). МСУПопахивает ковариантностью дженериков.Оооо... Месье... :-) A разве ICovariant<R> есть тоже самое, что и IEnumerable<R> ? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2014, 20:01 |
|
Поясните с классами в C#
|
|||
---|---|---|---|
#18+
PS: Думал реализация не столь важна, но коль возникли сомнения - то, например, вот (EF): Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2014, 20:06 |
|
Поясните с классами в C#
|
|||
---|---|---|---|
#18+
Алексей КskyANAпропущено... Ещё один советчик Вы вообще обратили внимание на то, что Boy - это наследник от Human?Может GetHumans возвращает множество Boy несмотря на то, что имеет тип результата IEnumerable<Human>. Иначе зачем топикстартеру задавать этот вопрос?Ла-ла-ла-ла-ла-ла.. 16472684 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2014, 22:17 |
|
Поясните с классами в C#
|
|||
---|---|---|---|
#18+
Cheerful CalfPS: Думал реализация не столь важна, но коль возникли сомнения - то, например, вот (EF): Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Ёбинос, месье, таки что Вы хотите? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2014, 22:18 |
|
Поясните с классами в C#
|
|||
---|---|---|---|
#18+
Cheerful CalfПочему во втором случае q всегда null? и как можно скастить IEnumerable<Human> в IEnumerable<Boy>? null ни во что нельзя превратить, null всегда null. и с другой стороны null есть всё, даже под тип КитайскаяБабушка, тоже вполне подходит. филосовский такой вброс. а вообще HumanServices.GetHumans().Where(x => x is Boy).ToList(); это спасёт Отца Русской Демократии, но не от null. уж сорри. месье, же не манж па сис жур. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2014, 01:48 |
|
|
start [/forum/topic.php?fid=17&fpage=18&tid=1349725]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
61ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
126ms |
get tp. blocked users: |
2ms |
others: | 242ms |
total: | 475ms |
0 / 0 |