确定化终止相反,它被称为不确定的终止 。缺乏确定化终止 , 以及因为垃圾收集器重新
安排并压缩内存从而不能使用指针的事实 , 在新闻组里激发了一波激烈的辩论 。我想这
些新限制可能会令你痛恨,因为你要依靠确定化终止;也可能你漠不关心 , 因为你不依
赖 Terminate 事件 。垃圾收集并不是万灵药,实现弱引用依然需要做一些考虑 。
从引用计数到垃圾收集只是 Visual Studio.NET 的支撑结构不是 COM 这个事实的
表象之一 。你能在VB.NET中使用COM对象,比如说ActiveX服务器或ActiveX控件 。然而,
你必须通过包装访问这些对象 。任何时候听到“包装”这个术语 , 你应该明白你面对着
性能损失,并且对象的行为可能有所不同 。如果当计划移植一个使用了大量COM对象的工
程 , 就需要认真地测试和计划 , 可能需要重新规划应用程序的结构才能移植成功 。坦率
地说,你要有遭受挫折的准备 。还记得从VBX迁移到 OCX的过程吗?我记得,我的精神病
医生也记得 。我很快就要再去看他了 ;-)
语言本身的变化要远远超过体系结构的变化 。大部分改变确有道理,但我并不认为
所有的改变都是如此 。以前版本的VB允许你以很多方法来做很多事,以至于统一的编码
标准要么不存在要么就很难强加于人 。Microsoft对VB做了大量的改变为的就是“清晰”
这种语言 。很多情况下,原来你有好几种方法做一件事,现在就只有一种了 。Billy Ho
llis 提供了语法变化的详细列表,包括废弃的关键字列表,但有些东西需要在这里重复
一下 。
首先,向过程参数传递数据的默认方法由引用(ByRef)变成了传值(ByVal) 。这个改
变主要是因为引用要比传值的风险大得多 。它的风险主要是调用过程中的数据可能被无
意中篡改 。你仍然能通过引用传递数据,但这一改变使你需要修改新的默认调用方法来
使用引用 。
Set语句消失了
其次,Set 语句消失了 。在 VB.NET 里如果你需要向变量传递一个对象引用,所需
要的只是一个等号,对象被视为同其它值一样 。这很酷,但也有副作用:默认属性消失
了 。例如,你不再能用这种方式引用一个属性:
Text1 = "What, me worry?"
作为替代,你必须显式地引用属性:
Text1.Text = "What, me worry?"
也许一眼看来不需要这种改变,但确实必须去掉默认属性 。例如 , 假定你有一个叫
objFoo的对象变量,不用Set语句,下面的语句所设置的引用就产生了歧义性:
objFoo = Text1
这条语句是应该设置到Text1的引用 , 还是以Text1的Text属性来填充objFoo?你不
能确定,编译器也不能 。抛弃Set语句同时要求抛弃默认属性 。
有一个改变我不喜欢:你不再能在不同的作用域里声明Property Get和Property S
et过程 。注意 VB.NET 没有 Property Let 语句:对象和数值都用 Property Set 。这意
味着你不能用一个 Friend Property Let 过程来对应一个 Public Property Get 。用V
B建立组件时可能会有麻烦 。许多组件开发者创建 Friend Property Set 过程以使他们
的应用程序能改变一个值,但提供 Public Property Get 过程以使他们的客户程序能取
回值 。我希望我能为这个改变找到一个合适的理由,可是我找不到 。
Microsoft说它力图使语言保持清晰并使之现代化—大部分情况下它做得不错—但这
个作用域问题和其它几个问题令人感到困惑 。例如,While...Wend 很早以前就应该消失
推荐阅读
- 斯诺克球迷网虎牙直播,2021年斯诺克比赛虎牙视频
- 写jquery插件参数,jquery 插件编写
- 休闲类食品如何做线上营销,休闲类食品如何做线上营销策划
- 宇宙素材直播,宇宙素材直播在线观看
- php获取客户端提交数据 php获取客户端提交数据错误
- hbase获取rowkey,hbase获取rowkey的值
- 虚拟主机数据删除不了,虚拟机里面的数据怎么删除
- python五角星怎么弄,python五角星代码教程
- vb.net如何画抛物线 vb画函数