Jeśli mam program Visual Studio 2008 i wybieram aplikację .NET 2.0, czy nadal mogę używać wyrażeń Lambda? Moje rozumienie wyrażeń Lambda polega na tym, że jest to funkcja wbudowana w kompilator, a nie framework, więc moim wnioskiem byłoby, że mógłbym użyć Lambda w aplikacji .NET 2.0. Czy ktoś może mi powiedzieć, czy tak jest?Wyrażenia VB.NET Lambda
Odpowiedz
Tak, jest to całkowicie obsługiwane. Dopóki nie budujesz drzewa wyrażeń lub w inny sposób nie odwołujesz się do System.Core, System.Xml.Linq itp., Używanie wyrażeń Lambda w aplikacji docelowej 2.0 jest całkowicie legalne. Dotyczy to każdej innej funkcji kompilatora wprowadzonej w VS2008 (VB9).
EDIT
Kilka odpowiedzi nieprawidłowo stwierdzić, że Lambda Expressions są cechą funkcji 3.5 lub 3.0. Wyrażenia lambdy są funkcją kompilującą, a nie ramową. Nie wymagają one obsługi ramowej w celu działania, a używanie ich w aplikacji skierowanej do wersji 2.0 jest całkowicie legalne.
Jedynym miejscem, w którym można wpaść w kłopoty, jest użycie lambda jako drzewa wyrażeń. Wyrażenia Drzewa są zarówno kompilatorem, jak i funkcją szkieletową i wymagają 3.5, aby działały poprawnie. Musisz jednak ciężko pracować, aby to umożliwić, ponieważ aktywnie staramy się temu zapobiec.
To nie działa. Użycie Linq wymaga, aby System.Linq był częścią zestawu ramowego, którego nie ma .NET 2.0.
Tak, masz rację. Zamiast metod anonimowych można używać wyrażeń lambda. Kompilator uporządkuje resztę. Wypróbuj to:
int sum = 0;
Array.ForEach(new[] {1, 2, 3, 4}, x => sum += x);
Nie możesz użyć żadnej z nowych funkcji .Net 3.5 (np. Linq). Takie postępowanie wymaga dodania odniesień do System.Linq, System.Core, itp .., które nie są obecne w .Net 2.0.
- 1. Wyrażenia Lambda
- 2. Niepoprawne wcięcie Wyrażenia Lambda
- 3. połączeń wewnątrz lambda wyrażenia
- 4. W klauzuli wyrażenia lambda
- 5. Wymień parametru lambda wyrażenia
- 6. umożliwienie wyrażenia lambda
- 7. Wyrażenia kontra Lambda
- 8. możliwe rekursywne wyrażenia lambda?
- 9. Wyrażenia Lambda: zachowanie kompilatora
- 10. Wyrażenia Java Lambda
- 11. Jak napisać wyrażenie VB.Net Lambda
- 12. Konwersja drzewa Lambda do wyrażenia
- 13. Jak porównać dwa wyrażenia lambda?
- 14. Wyrażenia Lambda dla klas abstrakcyjnych
- 15. żywotność wyrażenia lambda w rdzy
- 16. Związek Wybierz używając wyrażenia lambda
- 17. VB.Net - ocena wyrażenia matematycznego w łańcuchu
- 18. Jak deklarować obsługę zdarzeń lambda w VB.Net?
- 19. Lambda Parametr nie w zakresie - podczas budowania binarnego wyrażenia lambda
- 20. ThreadPool.QueueUserWorkItem z wyrażenia lambda i metody anonimowej
- 21. Wyrażenia lambda i funkcje wyższego rzędu
- 22. Nazwa właściwości do wyrażenia lambda C#
- 23. Wyrażenia lambda Haskella i proste formuły logiczne
- 24. Pobierz klasę otaczającą wyrażenia lambda Java
- 25. Pobieranie nazwy zdarzenia z wyrażenia lambda
- 26. Prawidłowo obsługi możliwe System.NullReferenceException w lambda wyrażenia
- 27. LINQ do SQL: Ponowne użycie wyrażenia lambda
- 28. Kotlin wyrażenia lambda jako opcjonalny parametr
- 29. Jak użyć wyrażenia lambda w ramach oddzielnych
- 30. Konwersja Array iteracji do wyrażenia lambda
Tak, dandan ma rację. Ponadto, nie można odwoływać się do zestawów 3.5, po prostu umieszczając je w koszu. Pytałem ... Problemem jest też wiele zmian w przestrzeni nazw Systemu. – andy
Tak nie jest. LINQ jest najprawdopodobniej obsługiwany przy użyciu kompilatora 3.5 (Vb9) w celu kierowania do aplikacji 2.0, pod warunkiem, że masz wystarczająco dostępne metody LINQ, takie jak Select i Where. Prawda także dla C# – JaredPar