Visual Basic 9.0 前沿播报·动态篇(一)动态标识符

翻译 2006年06月04日 20:04:00

动态语言今年来发展很快,各种脚本语言多少都带有些动态语言的特点。动态语言以其灵活的语法和丰富的运行时行为赢得了许多人的青睐。在.NET阵营,C#一直扮演着静态语言的角色,尽管3.0的语法改变很激进,但仍注重于编译时的类型检查和约束。动态特性用的不好会产生更多运行时问题,不易确保程序的可靠性,但其提高开发效率的作用是毋庸置疑的。Visual Basic 9.0是Visual Studio中唯一能让你统领动态和静态两大领域的语言,让你在程序中自由选择喜欢的风格。

Visual Basic 从1.0便支持后期绑定,即按照对象的运行时类型信息使用对象,而不是定义这个对象时的类型信息。如:

Dim l As Object = New ArrayList()
l.Add(12)
l.RemoveAt(0)

我们知道Object没有Add或RemoveAt方法,但运行时类型ArrayList具有他们,因此Visual Basic允许到运行时再检查有无相应的操作并支持。既然这个过程已经是在运行时做的了,我们就应该允许这个后期绑定的操作本身也是在运行时确定。这个语法增强叫做动态标识符。比如我们可以和这样写:

Dim l As Object = New ArrayList()
l.("Add")(12)
l.("RemoveAt")(0)

我们看到,这个时候方法名称Add和RemoveAt已经是字符串了,它当然也可以是包含字符串的变量!所以你甚至可以写出这样的代码:

l.(Console.ReadLine())(12)
l.("Remove" & "At")(0)

这样,作为方法名称的标识符就可以完全在动态期间确定了。方法名称如此,那么类型名称呢?理应如此。我们可以这样写:

Dim l As Object = New ("ArrayList")()

这样,你的变量l的类型将根据一个运行时字符串的值确定。动态标识符还能将函数的参数也动态化,假设有下列子程序:

Sub Method1(Optional arg1 As String, Optional arg2 As String)

运行的时候,我们可以动态地指定将数值赋给哪个参数:

If a > 0 Then argString = "arg1" Else argString = "arg2"
Method1({argString}:= a.ToString())

注意在:=符号之前的大括号,表示对参数名称的动态结合。有了动态标识符这一特性,Visual Basic 9.0将不需要利用反射的复杂语法,就可以做很多需要反射和运行时类型信息来做的任务,这使得Visual Basic成为解决你手边小问题的最佳帮手。本期我们已经领略到Visual Basic 9.0在动态特性上的革新,下一期将介绍第二个动态特性——动态接口。

Visual Basic 9.0 前沿播报·动态篇(一)动态标识符

动态语言今年来发展很快,各种脚本语言多少都带有些动态语言的特点。动态语言以其灵活的语法和丰富的运行时行为赢得了许多人的青睐。在.NET阵营,C#一直扮演着静态语言的角色,尽管3.0的语法改变很激进,但...
  • paulin
  • paulin
  • 2008年03月24日 08:52
  • 288

Visual Basic 9.0 前沿播报 -动态标识符

Csdn dotnet blog 专家群 施范 动态语言今年来发展很快,各种脚本语言多少都带有些动态语言的特点。动态语言以其灵活的语法和丰富的运行时行为赢得了许多人的青睐。在.NET阵营,C#一直扮演...
  • dotnetgroup
  • dotnetgroup
  • 2005年11月16日 14:50
  • 662

Visual Basic 9.0 前沿播报·动态篇 动态标识符

Csdn dotnet blog 专家群 施范 动态语言今年来发展很快,各种脚本语言多少都带有些动态语言的特点。动态语言以其灵活的语法和丰富的运行时行为赢得了许多人的青睐。在.NET阵营,C#一直扮演...
  • dotnetgroup
  • dotnetgroup
  • 2005年11月15日 15:07
  • 2529

Visual Basic 9.0 前沿播报·动态篇(二)动态接口

在谈到动态语言与静态语言的区别时,有一句很经典的话:Static typing when possible, dynamictyping when needed。Visual Basic支持后期绑定和...
  • paulin
  • paulin
  • 2008年03月24日 08:54
  • 274

Visual Basic 9.0 前沿播报·动态篇(三)XML字面量和XML后期绑定

本期是Visual Basic 9.0前沿播报动态篇的第三篇,也是这个系列的完结篇。按照惯例,我将Visual Basic 9.0最激动人心的部分放在了这一篇。在这一篇,我们将看到所有新特性作用在XM...
  • paulin
  • paulin
  • 2008年03月28日 15:53
  • 406

关于Visual Basic 9.0动态接口

  • gujiawei_27
  • gujiawei_27
  • 2009年07月11日 18:16
  • 507

Visual Basic 9.0 概述

点击此处阅读全文
  • hzq726
  • hzq726
  • 2005年11月28日 10:47
  • 520

Visual Basic 9.0 概述

      Visual Basic 9.0 概述摘要:本文概述支持数据密集型编程的新的 Visual Basic 语言特性和新的语言扩展。本页内容简介开始使用 Visual Basic 9.0隐式类...
  • cyz1980
  • cyz1980
  • 2005年12月28日 20:03
  • 1407

Diskpart工具应用两则:MBR/GPT分区转换 & 基本/动态磁盘转换

将基本磁盘转换为动态磁盘可直接在操作系统的磁盘管理中完成,如图1所示,这一转换过程对硬盘上的数据没有影响,但是可能会影响到系统的启动(盗版系统激活会受影响)。 图1:基本磁盘转换为动态磁...
  • djd1234567
  • djd1234567
  • 2015年08月18日 13:01
  • 1695

IO协议栈前沿技术研究动态(2015存储峰会分享)

冬瓜哥在由DOIT传媒举办的12月10日的中国存储峰会上做了一次有关IO协议栈前沿技术和动态的技术分享,以下是演讲的精华内容。...
  • u014602076
  • u014602076
  • 2015年12月25日 17:27
  • 1025
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Visual Basic 9.0 前沿播报·动态篇(一)动态标识符
举报原因:
原因补充:

(最多只允许输入30个字)