Visual Basic 2010的新增功能2012-09-04 MSDN Jonathan Aneja自 1991 年 Visual Basic 语言诞生之日起,它就一直是生成应用程序的高效 率工具。将近 20 年之后,它继续提供与 Microsoft .NET Framework 的轻松对 接,使开发人员能够编写可跨越桌面、电话、浏览器甚至云的应用程序。Microsoft 将在本月发布 Visual Studio 2010,其中包含 Visual Basic 版本 10(有时称为 VB 2010 或 VB10)。此版本是迄今为止最强大的版本,包含 许多省时省力的功能,可以帮助开发人员通过更少的代码行完成更多的操作。在 这里,将会为您提供所有必要的内容,让您充分了解并利用 Visual Studio 2010 中的 Visual Basic。共同演变在过去,Visual Basic 和 C# 是 由独立团队分别开发的,这通常会导致一些功能先出现在一种语言中,继而又出 现在另一种语言中。例如,C# 有 Visual Basic 中所没有的自动实现属性和集合 初始值设定项,而 Visual Basic 则有 C# 中所没有的晚期绑定和可选参数等功 能。但每当一种语言具有新功能时,许多客户都会要求将该功能也添加到另一种 语言中。为了解决这一需求,Microsoft 合并了 Visual Basic 和 C# 团 队,实行共同演变的策略。目的是为推动这些语言共同发展。当一种语言中引入 重大功能时,它也会出现在另一种语言中。这并不是说每种功能都将出现在两种 语言中,并按完全相同的方式工作;实际上,每种语言都有自己的历史、灵魂和 感觉 – 保留这些特性非常重要。共同演变意味着您在一种语言中可以执行 的任何任务都可以通过另一种语言轻松实现。在 .NET Framework 4 中, Visual Basic 和 C# 朝这一目标迈进了一大步,分别吸收了对方既有的许多功能 。然而,共同演变不仅影响到以前的功能;它同样是这些语言未来的发展策略。 本着这种精神,.NET Framework 4 在两种语言中同时引入了强大的新功能,例如 动态语言运行时、嵌入式互操作类型和泛型方差,从而使 Visual Basic 和 C# 开发人员能够充分利用 .NET Framework。Visual Basic 2010 新增功能Visual Basic 2010 中的新功能旨在帮助您通过更少的代码行实现更多操 作。我们 Visual Basic 设计团队仔细研究了开发人员通常不得不编写大量繁琐 样板代码的地方,并找到相应解决办法,让编译器代替执行此类工作。当然,这 是从整体上来看,现在就让我们深入了解各项功能。隐式行继续符Visual Basic 是一种面向行的语言,它使用类似于英语的清晰语法来增 强可读性。但这通常会导致代码遇到每行 80 个字符的限制,从而迫使开发人员 要进行大量滚动。您可以使用下划线字符来告知编译器应将下一行作为当前行继 续处理(也就是说,将多个物理行视为单个逻辑行)。但不得不重复地键入下划 线字符一直很令人烦恼,而事实上多年以来排在首位的功能请求就是让编译器 “解决这个问题”。而在 Visual Basic 2010 中,编译器能 够解决这个问题。编译器现在知道哪些标记(例如逗号、圆括号和运算符)往往 出现在行继续符前面,并且它会插入字符,因此开发人员不再需要插入字符。例 如,用逗号作为 Visual Basic 语句的结尾肯定不合逻辑;编译器知道这一点, 因此,当编译器看到诸如 {comma, enter} 这样的标记流时,它会推断出存在行 继续符,如图 1 中的示例所示。图 1 推断出行继续符
<Extension()> Function FilterByCountry( ByVal customers As IEnumerable(Of Customer), ByVal country As String) As IEnumerable(Of Customer) Dim query = From c In customers Where c.Country = country Select <Customer> <%= c.Name & "," & c.Country %> </Customer> Return query End Function
在 Visual Basic 2008 中,图 1 中的代码将需要 9 个下划线字符。然而,在以下每种情况下,编译器会推断出下划线字符在何时是 必要的,并允许将其忽略:在 <Extension()> 属性之后在 方法声明中的 ((左圆括号)之后在第一个参数的 ,(逗号)之后在方法声明中的 )(右圆括号)之前在 =(等号)之后在 <%=(嵌入式表达式的开始标记)之后在 XML 文本的每个 &(与号)之后在 %>(嵌入式表达式 的结束标记)之前这个新的编译器功能对于方法签名特别有用,它对于所 示示例中超过 80 个字符的情况也将正常工作(如果每一部分都位于同一行上) 。在图 2 中,您将看到行继续符为隐式的标记和位置的所有组合。图 2 行继续符为隐式的情况
标记 | 之前 | 之后 |
,(逗号)、.(句点)、>(属性)、( {(左括 号)、<%=(嵌入式表达式开始标记(XML 文本)) | | X |
)、}、](右括号)、%>(嵌入式表达式结束 标记) | X | |
所有 LINQ 关键字: Aggregate、 Distinct、From、Group By、Group Join、Join、Let、 Order By、Select、Skip、Skip While、Take、Take While、Where、In、Into、 On、Ascending、Descending | X | X |
运算 符: +、 -、*、/、、^、>>、<<、Mod、&、+=、-=、*= 、/=、=、^=、>>=、<& lt;=、&=、<、<=、>、 >=、<>、Is、IsNot、Like、And、Or、Xor、 AndAlso、 OrElse | | X |
With(在对象初始值设定项中 ) | | X |
如您所见,有 60 多处该 语言不需要下划线字符的地方。(事实上,本文中的任何一个代码示例都不需要 行继续符。)当然,您仍然可以使用下划线字符,因此 Visual Basic 以前版本 中的代码将仍然按预期方式编译。