VB.NET Лямбда-выражения - PullRequest
5 голосов
/ 22 июля 2009

Если у меня Visual Studio 2008 и я нацеливаюсь на приложение .NET 2.0, могу ли я по-прежнему использовать лямбда-выражения? Я понимаю, что Lambda Expressions - это функция, встроенная в компилятор, а не в фреймворк, поэтому я пришел к выводу, что я могу использовать Lambda в приложении .NET 2.0. Может кто-нибудь сказать мне, если это так?

Ответы [ 3 ]

12 голосов
/ 22 июля 2009

Да, это полностью поддерживается. До тех пор, пока вы не создадите дерево выражений и не будете ссылаться на System.Core, System.Xml.Linq и т. Д. Иным образом ... вполне допустимо использовать лямбда-выражения в приложении 2.0 с нисходящим таргетингом. Это верно для любой другой функции компилятора, представленной в VS2008 (VB9).

РЕДАКТИРОВАТЬ

В некоторых ответах неверно указывается, что лямбда-выражения являются функцией 3.5 или 3.0. Лямбда-выражения - это функция компилятора, а не Framework. Для работы им не требуется поддержка фреймворка, и совершенно законно использовать их в приложении с нацеленностью до 2.0.

Единственное место, в которое вы могли бы попасть, это если бы вы использовали лямбду в качестве дерева выражений. Деревья выражений являются как компилятором, так и фреймворком и требуют 3.5 для правильной работы. Но вы должны усердно работать, чтобы это сделать, поскольку мы активно пытаемся предотвратить это.

2 голосов
/ 22 июля 2009

Да, вы правы. Вы можете использовать лямбда-выражения вместо анонимных методов. Компилятор перебирает все остальное. Попробуйте это:

int sum = 0;
Array.ForEach(new[] {1, 2, 3, 4}, x => sum += x);

То, что вы не можете сделать, это использовать какие-либо новые функции .Net 3.5 (т.е. Linq). Для этого необходимо добавить ссылки на System.Linq, System.Core и т. Д., Которых нет в .Net 2.0.

0 голосов
/ 22 июля 2009

не работает. Для использования Linq требуется, чтобы System.Linq был частью сборки фреймворка, которого нет в .NET 2.0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...