专家揭秘Visual Basic 2010的十大新特性

原创
开发 后端
本文就我对Visual Basic 2010的了解,总结出10个.NET开发人员应该喜欢的特性,希望你也喜欢。

【51CTO译文】今天我们选译一篇Visual Basic 2010新特性方面的文章,一起来看看经典的VB在新版Visual Studio 2010上又焕发了怎样的青春。本文作者Paul Kimmel是经验丰富的开发者和国外知名技术网站CodeGuru的专栏作者,曾著有多本面向对象编程和.NET方面的书籍。新作《Professional DevExpress ASP.NET Controls》正在Amazon上出售。下面就一起来看看编写了30多年代码的老程序员如何看待Visual Basic 2010。

介绍

在今年的MVP大会上,有人想采访我“喜欢Windows 7什么功能”,我没有接受采访,因为我对Windows 7没什么意见要发表,我对Visual Basic倒是有些想法,如果他们愿意问我Visual Basic 2010的一些问题,我绝对愿意接受采访。本文就我对Visual Basic 2010的了解,总结出10个.Net开发人员应该喜欢的特性,希望你也喜欢。同时51CTO .NET频道向您推荐《Visual Basic开发指南》。

下面就是这10个.NET开发人员会喜欢的10大特性:

10、使用时生成 - 在定义它们之前使用类和成员

9、突出显示引用 - 点击一个符号,这个符号的所有实例都高亮显示

8、智能感知完成和建议模式 - 参见第10条

7、导航到 - 在源代码中搜索一个符号

6、集合初始化 - 创建一个集合并初始化它

5、自动执行属性 - 为getter和setter省略的属性

4、协方差和逆变性 - 使用更多的派生参数类型

3、多行Lambda表达式 - 有时一个Lambda需要一组语句

2、Lambda表达式支持Sub

1、延续字符隐式连接

本文仅选择其中几个进行说明。

使用时生成

你这样做了吗?假设你编写了如图1或清单1所示的一些代码,IDE将会自动添加波浪线,表示Primes类型还未声明,这时你可以点击波浪线末尾的红色下划线,它会弹出一个错误纠正选项列表,如图2所示,你可以从中选择一个纠正操作,我这里选择“生成类Primes”,IDE将会自动为新类增加一个新文件。点击IsPrime错误纠正选项,IDE将自动为你生成方法存根,如图3所示。 

让IDE自动为你生成类和方法存根 
图1:让IDE自动为你生成类和方法存根

选择生成类Primes 
图:2 选择生成类Primes

选择生成方法存根 
图:3 选择生成方法存根

清单1:使用未声明的类型和成员,让Visual Studio 2010自动为你生成类型和成员存根

Sub Main()  
      Console.WriteLine("is {0} prime: {1}", 5, Primes.IsPrime(5))  
      Console.ReadLine()  
    End Sub 
End Module 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

清单2:根据使用到的Primes和IsPrime自动生成的代码

    Class Primes  
  Shared Function IsPrime(ByVal p1 As IntegerAs Object 
    Throw New NotImplementedException  
  End Function 
End Class 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

Navigate to(导航到...)

“Navigate to”是Visual Studio“编辑”菜单下的一个菜单项功能,在导航到窗口的“搜索项”区域输入关键词,点击“搜索”按钮,在结果列表中点击一个搜索结果,在窗口下方会看到一个简单的对象浏览器风格的说明信息,如图4所示。 

导航到窗口 
图4: 导航到窗口

在这个例子中,我准备导航到IsPrime,点击确定后就可看到其源代码了,如清单3所示。

清单3:Primes类实现代码

Class Primes  
  Private Shared Primes As List(Of Integer) = New List(Of Integer)  
  Shared Sub New()  
    Primes.AddRange({2, 3, 5, 7, 11})  
    BuildPrimes()  
  End Sub 
  Shared Function IsPrime(ByVal test As IntegerAs Boolean 
    For I = 0 To Primes.Count - 1  
      If (test Mod Primes(I) = 0) Then Return False 
      If (Primes(I) >= Math.Sqrt(test)) Then Exit For 
    Next 
    Return True 
  End Function 
  Private Shared Sub BuildPrimes()  
    For i = 13 To 1000000  
    If (IsPrime(i)) Then 
      Primes.Add(i)  
    End If 
    Next 
  End Sub 
End Class 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.

集合初始化

集合是一个集集合、数组或枚举量的总称,如List(Of T),这里的T是某种类型,然后手工添加元素到集合中,集合初始化表示你可以通过集合初始化语法{项目1,项目2,项目3...项目n}给集合添加项目,如下面的例子表示在AddRange方法中使用了集合初始化。

Primes.AddRange({2, 3, 5, 7, 11}) 
  • 1.

你也可以这样写:

Dim somePrimes = {2, 3,5,7,11}  
Primes.AddRange(somePrimes) 
  • 1.
  • 2.

你也可以使用集合初始化语法初始化一个复合对象的集合。

自动执行属性

自动执行属性是具有明确的getter和setter块的属性声明,支持字段由编译器自动生成,当你使用自动属性时,意味着你要引用属性而不是字段,当getter简单地返回字段值,setter简单地给支持字段赋一个值时,使用自动执行属性,为Primes (List(Of Integer))实现的自动执行属性代码如下:

Public Shared Property Primes As New List(Of Integer
  • 1.

自动执行属性可以节省写代码的时间,当然你也可以使用代码生成工具,如CodeRush,基于模板生成属性,通过这些工具也可以节省大量的时间,不过在VB中就不再需要这些第三方辅助工具了。

理解协变性和逆变性

协变性(协方差)意味着你可以为一个参数,一个子类型或继承自已定义类型的某些事物使用更多的派生类型,逆变性意味着只能使用更少的类型,因为.NET中的一切都派生自对象,因此你可以使用对象替换一个参数。

这背后的目的都是为了更好地匹配函数签名,我见过最常见的用法是用在事件(或委派类型)中,因为这里有许多参数被定义为对象。在帮助文件中方差主题描述包括通用接口,集合的用法,委派的用法,通用委派函数及行为的用法,请参考MSDN帮助主题http://msdn.microsoft.com/en-us/library/dd233060(VS.100).aspx

定义多行Lambda表达式

本来在VB中每个Lambda表达式都有一个Function,每个方法都有一个简写,在VB中的问题是Lambda必须返回点什么,但有时你可能并不希望返回值,使用.Net 4.0和VB时,你可以定义Function Lambda和Sub Lambda表达式,第一个例子显示了一个Function Lambda,第二个显示了一个Sub Lambda:

Module Module1  
    Sub Main()  
      ' a function Lambda  
      Dim PrimeTest = Function(number) Primes.IsPrime(number)  
      'a sub Lambda  
      Dim WriteLine = Sub(mask, number) Console.WriteLine(mask,   
        number, PrimeTest(number))  
      WriteLine("is {0} prime: {1}", 5)  
      Console.ReadLine()  
    End Sub 
End Module 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.

总结

我从1978年开始编程,那时的编码速度很慢,很费力并且很乏味,而且那个时候的程序都比较简单,现在我们编写的应用程序少则数十万行代码,多则上百万行代码,VB中的新特性,如自动执行属性和Lambda表达式,大大提高了开发人员的生产力,在元编程工具中结合这些功能可以让你在代码世界中自由游弋。

我喜欢这些创新,对我来说,这些创新就等于生产力。

原文:Top Ten Things .NET Developers Will Like About Visual Basic 2010   

作者:Paul Kimmel

【编辑推荐】

  1. 浅谈VB.NET中的跨进程消息钩子
  2. VB.NET中的动态代码生成技巧
  3. C#和VB.NET类型相关知识汇总向
  4. VB.NET中有用的通用对象列表
  5. VB.NET和C#逐层横向对比

 

责任编辑:佚名 来源: 51CTO.com
相关推荐

2010-03-26 14:37:57

Visual Stud

2010-08-02 14:23:56

FlexBuilder

2010-08-05 15:33:01

FlexBuilder

2013-10-28 14:15:12

2013-06-27 09:35:26

Windows 8.1预览版特性

2010-05-13 08:57:22

jQuery 1.4

2011-05-30 09:07:44

MangoWindows Pho

2013-06-27 13:01:58

Windows 8.1

2010-01-20 10:02:52

SQL Server2

2010-09-28 09:11:39

2011-10-10 13:24:49

2013-10-18 10:18:52

Windows 8.1微软

2010-06-24 15:03:37

MSN微软

2009-02-04 10:49:08

IT求职揭秘技能

2015-09-16 09:45:00

2009-10-16 09:03:36

Visual Stud

2011-07-05 09:05:40

新特性iOS 5.0

2011-01-07 10:00:00

网络事件

2013-06-20 10:10:05

Win Sever 2 Hyper-V

2010-01-13 09:11:04

Visual Stud
点赞
收藏

51CTO技术栈公众号