vb.net和VB的关系

VB.net 是否该被看作VB的新版本或者是另一个完全不同的语言尚在争议中。虽然并非显而易见,但只要某个方法被弃用,它就会可会被自动转换,这说明了该语言的句法并没有出现很多突破性的变化,只是增加了对新功能的支持,比如结构化意外处理机制和短循环表达式(structured exception handling and short circuited expressions)。有一种变化会让旧用户迷惑:Integer和Long数据类型在长度上分别倍增。16位的 integer 在VB.NET中被认为是Short,而Integer和Long分别是32位和64位。同样,WindowsFormsGUI编辑器和VB Form 编辑器在外观和功能上非常相似。

出现巨大变化的是语意,从运行于基于COM的deterministic, reference-counted的引擎之上的编程环境,转变为全面面向对象的基于.NET Framework的语言。.NET Framework包括了CLR(使用通用垃圾收集机制和JIT编译引擎的虚拟机)和大量的类库。VB开发者进入VB.NET要面对新增的大量类库的问题,虽然这在VS 2005的My 功能中已有所阐述。

上述变化表明了许多在运行及维护相关优化事宜下面的假定,一些VB6函数和库不再存在而其它的仍然可用,但是比不上.NET语言中自带的可替换的函数和库来得高效。即使它们可被编译,但大多从VB6转换而来的应用将需要一定程度上的重构(refactoring),以全面利用新语言的优点。在有关句法、应用调试、部署和术语等方面的变化,有大量的文档可以参考。

1, 比较样例:

两个例子都弹出"Hello,World"并带OK按钮的信息框,它们显示了VB和VB.Net在句法上的相似。

VB.NET:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

MessageBox.Show("Hello, World")

End Sub


VB:

Private Sub Command1_Click()

MsgBox "Hello, World"

End Sub


注意,VB.NET中的所有过程调用都必须加圆括号,而VB6中只有调用函数或者VB6中使用Call来调用过程时

才需要加圆括号,

另外,Command1和Button1并非必须,只是VB和VB.NET系统自动默认的控件名。

两个例子都卸载活动窗口,它们显示了VB和VB.Net在句法上的不同。

VB.NET:

Private Sub cmdClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdClose.Click

Me.Close()

End Sub


VB:

Private Sub cmdClose_Click()

Unload Me

End Sub


2, 争议:许多资深的VB程序员抱怨VB.NET,因为VB.NET 2002丢掉了许多不再发行的VB6中使用的大量语言constructs和用户界面功能,并且对保留下来的东西也改变了语意。例如,在VB.NET参数默认是以值方式传递的,而不是以引用方式。VB.NET 2002被半嘲讽半认真地称为Visual Fred或VBDOTNOT。作为对微软拒绝为VB6再提供维护与支持的回应,当月月底出现了反对者的请愿(petition)

VB.NET的支持者们认为新语言在很多方面比旧版本更为强大,比如它以相比早期版本更为自然、紧密和完全的方式地加入了现代面向对象的编程范式。反对者们有不同意见,虽然VB6对对象模型支持有缺点,但是二次开发升级到VB.NET 的成本比升级后的收益要高得多。而开发软件发布因特网版本的独立程序员也对VB.NET的RunTime尺寸过大不满。

相对编译成机器码的语言,编译成MSIL的语言包括VB.NET比较容易被反编译。

微软提供了VB到VB.NET的自动转换器,虽几经改进,但仍无法转换全部代码,几乎所有非小型程序都需要人工修改以完成编译。为了运行优化,大多程序需要大量工作去重构。

主要是进行演算的VB程序自然会更容易升迁,但是采用了以下功能,如数据库支持,图形, unmanaged operations,或者在安装启用明细方面都很麻烦。不幸的是,这些恰好是许多商业应用的核心。

另外,Win98及其以上的系统就自带了VB6的运行时(RunTime)库,而VB.NET需要安装大得多的.NET Framework。除了Windows VistaWindows XP Media Center EditionWindows XP Tablet PC Editionand Windows Server 2003有自带.NET Framework,其它版本需要另外安装,这对用户和程序员都不方便。

针对开发者的不满,微软主要做了如下努力:使新的开发更容易启动,而把已开发的VB6代码升级到VB.NET。他们的最新成果可以从扩展阅读里看到, 那里文章和源码例子主要包括:完成VB6中的常见任务如打印预览;整合VB6和VB.NET解决方案(dubbed VB Fusion),从VB6 代码转换到 VB.NET。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 20
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值