|
Чем заменить Func<>?
|
|||
---|---|---|---|
#18+
Пытаюсь компильнуть код под 3.5, там есть такое объявление Код: c# 1.
Дает ошибку Код: c# 1.
Чем заменить? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2016, 12:54 |
|
Чем заменить Func<>?
|
|||
---|---|---|---|
#18+
Ролг Хупин, подключить mscorlib.dll в референсах пробовали? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2016, 12:58 |
|
Чем заменить Func<>?
|
|||
---|---|---|---|
#18+
Axeleron, Там она скорее есть, нужно просто using System; ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2016, 13:47 |
|
Чем заменить Func<>?
|
|||
---|---|---|---|
#18+
добавил mscorlib а using System; и так был. не катит. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2016, 13:49 |
|
Чем заменить Func<>?
|
|||
---|---|---|---|
#18+
Ролг Хупин, Тогда не 3,5, меньше ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2016, 14:25 |
|
Чем заменить Func<>?
|
|||
---|---|---|---|
#18+
ЕвгенийВРолг Хупин, Тогда не 3,5, меньше Изменил на 4 - ошибок нет Вернул 3.5 - ошибка. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2016, 15:52 |
|
Чем заменить Func<>?
|
|||
---|---|---|---|
#18+
Ролг Хупин, В .net 3.5 Func<> лежит в сборке System.Core.dll: https://msdn.microsoft.com/ru-ru/library/bb549151(v=vs.90).aspx Добавьте ссылку :) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2016, 16:42 |
|
Чем заменить Func<>?
|
|||
---|---|---|---|
#18+
Выше же сказали - генерик-делегатом. https://msdn.microsoft.com/en-us/library/bb534647(v=vs.110).aspx : Код: c# 1. 2. 3. 4.
и вышеприведенный метод переписывается так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
- под 3.5 вполне нормально компилируется студией, начиная с 2010-й (насчет 2008-й не уверен - не помню, когда компилятор стал поддерживать спецификаторы ковариантности/контрвариантности - но откуда сейчас взять эту древнюю 2008-ю?) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2016, 18:24 |
|
Чем заменить Func<>?
|
|||
---|---|---|---|
#18+
Сон Веры Павловны- под 3.5 вполне нормально компилируется студией, начиная с 2010-й (насчет 2008-й не уверен - не помню, когда компилятор стал поддерживать спецификаторы ковариантности/контрвариантности - но откуда сейчас взять эту древнюю 2008-ю?) Нововведением 3,5 был в частности LINQ, для этого были введены Expersion, анонимные типы, вывод типов ну и Func/Action. Нововведением 4,0 были в частности ко/контрвариантность и dynamic. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2016, 20:42 |
|
Чем заменить Func<>?
|
|||
---|---|---|---|
#18+
ЕвгенийВНововведением 3,5 был в частности LINQ, для этого были введены Expersion, анонимные типы, вывод типов ну и Func/Action. Нововведением 4,0 были в частности ко/контрвариантность и dynamic. Тут, пардон, в кучу кони/люди. Анонимные типы/вывод типов - это фича версии языка 3.0 (т.е. компилятора), как и ко/контрвариантность в версии языка 4.0. С версией CLR это никак не коррелирует, т.к. никак не завязано на классы FCL. Вот такой код вполне нормально скомпилируется даже под Framework 2.0 в студии начиная от 2010, и выше: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2016, 06:30 |
|
Чем заменить Func<>?
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныТут, пардон, в кучу кони/люди. Анонимные типы/вывод типов - это фича версии языка 3.0 (т.е. компилятора), как и ко/контрвариантность в версии языка 4.0. С версией CLR это никак не коррелирует, т.к. никак не завязано на классы FCL. Вот такой код вполне нормально скомпилируется даже под Framework 2.0 в студии начиная от 2010, и выше: Скомпилируется потому, что не используется ко/контравариантность и потому, что 4,0 при установке меняет csc от 2,0. Хотя почему не ругается для меня загадка... Причем не ругается и на dynamic.... Но, попробуй скомпилировать это в 2,0 и 4,0 Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2016, 10:26 |
|
Чем заменить Func<>?
|
|||
---|---|---|---|
#18+
ЕвгенийВНо, попробуй скомпилировать это в 2,0 и 4,0 Не скомпилируется нигде вообще - TripleFunc<in TKey, in TValue, out TResult> никак не привести к результату вызова AddOrUpdate, т.е. TResult. А вот такое: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
нормально компилируется и там, и там. В IL при этом создается идентичное объявление TripleFunc: Код: c# 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2016, 10:44 |
|
Чем заменить Func<>?
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, Да, что то я не туда погнал :( Но все равно in, out в делегатах и интерфейсах и dynamic появились только в .NET 4.0 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2016, 11:01 |
|
Чем заменить Func<>?
|
|||
---|---|---|---|
#18+
Да и Код: c# 1.
Пройдет в 4,0 и не пройдет в 2,0 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2016, 11:21 |
|
|
start [/forum/topic.php?fid=20&msg=39238844&tid=1400591]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
38ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 260ms |
total: | 403ms |
0 / 0 |