Функционально, есть ли какое-либо различие (кроме синтаксиса onbviously) между лямбда-выражениями в C# и VB.Net?
Править: развитие ответа CraigTP: какие-либо ссылки на ситуацию в.Net 4?
Править: Я спрашиваю, потому что я привык к C#, но для следующего проекта клиент спрашивает VB.Net. Мы не являемся априорными против этого. Мы понимаем, что большинство конструкций языка поддерживается на обоих языках. Однако мы особенно любим способ, которым C# реализует лямбда-выражения. Мы хотели бы иметь обзор различий с VB.Net
Править: ответ принятого CraigTP для указания, что я в настоящее время рассматриваю наиболее важным различием.
Таким образом подводить итог: VB.Net 9 не поддерживает многострочные операторы в лямбда-выражении, и лямбда должна всегда возвращать значение. Обе из этих проблем решаются в VB.Net 10
Там нет функционала Разница, однако, как Joe Albahari говорит в этот форум Post :
vb.net не поддерживает мультифильту лямбда выражения или анонимные методы.
Обратите внимание, что это основано на C # 3.0 и VB.NET 9.0 (т. Е. Версии языков Visual Studio 2008) - я не уверен, что он по-прежнему относится к Visual Studio 2010 (C # 4.0 и VB.NET 10.0 соответственно).
Отредактируйте:
в соответствии со вторыми комментариями Richard Szaley и мои собственные комментарии, VB.NET 10.0 (который будет частью Visual Studio 2010) . поддерживает мультифильтую лямбдас, а вот ссылка на Видео MSDN Channel 9, которое показывает эту функцию (наряду со многими другими!):
лямбда выражения в VB.Net (Pre-2010) должны вернуть значение. Например, следующий синтаксис был недействительным в VB.Net 9, но действителен в VB.NET 10 (код из Mike McIntyre Blog :
Array.ForEach(numbers, Sub(n)
Console.Write("Number: ")
Console.WriteLine(n)
End Sub)
Правила для генерального метода параметра Тип вывода из неявно набранных аргументов лямбда скорее отличаются в VB и C #.
Мы могли бы перечислить незначительные различия весь день; Это, вероятно, пошло бы быстрее, если вы уточните, почему вы спрашиваете.
Увидеть никаких причин, по которым было бы, в конце того, что выражения все будут построить одну и ту же структуру объектов - используемые обоими языками под крышкой (по крайней мере, с новейшими версиями)
Это также может быть хорошей иллюстрацией к небольшим различиям в использовании: Linq Training Guide