2011-12-23 5 views
0

Следующий код создает ошибку компилятора «Ожидаемое выражение» (Sub подчеркнуто).Выражение Lamba не может использоваться как ожидалось

Dim lambda As Action(Of Integer) = Sub(x) Console.WriteLine(x) 

Почему это не работает?

Примечание: Соответствующий C# код работает:

Action<int> lambda = x => Console.WriteLine(x); 

ответ

3

Я предполагаю, что вы используете Visual Studio 2008. Действие лямбды в VB.NET (Sub ключевое слово) have been added in VB 10, который поставляется с Visual Studio 2010. В том же это правда для многострочных лямбдов, между прочим.

Обратите внимание, что это не проблема с каркасом, а проблема с компилятором: вы можете использовать action lambdas даже в .NET 3.5 проектах, если вы используете компилятор VS 2010.

C# было лямбды действий, прежде чем VB, который является, почему C# пример работает даже в VS 2008.

+0

Это объясняет все. Благодаря! –

+0

Есть ли способ сделать что-то подобное в VB.net 3.5? –

+0

@ SimonDugré: Конечно, он отлично работает в VB.net 3.5! Вам просто нужно использовать VS 2010 или выше. – Heinzi

Смежные вопросы