VB中的New 与 CreateObject的区别

VB中的New与CreateObject在资源控制上有显著差异。New引用内存中现有实例并受GC管理,而CreateObject每次都会创建新实例且需手动释放。New调用带下划线接口,CreateObject返回IDispatch。此外,New是前期绑定,有类型检查;CreateObject是后期绑定,无类型检查。
摘要由CSDN通过智能技术生成
set Dic=New Scripting.Dictionary

set Dic=Createobject("Scripting.Dictionary")
是一样的

但是
Set MyWsh=Createobject("Wscript.Shell")
是可以的
Set MyWsh=New Wscript.Shell是不行的
///

想要了解createobject,请参考 VB CreateObject函数 专题

想要了解NEW,请参考【转】VB中NEW的用法(申请内存空间)

1 .

createobject与new 本质的不同。
createobject与new 的关键区别就是声明后系统对资源的控制权不一样。
createobject是由内存中重新创建一个实例而不是简单的资源计数器+1的概念。如果内存中存在一个这样的实例,编译器不会理会这个实例而是将对象重新创建一个。实际上是一个完全独立的新的资源实例。并且不受GC的资源回收控制,必须自己回收。
new声明的时候,编译器回自动寻找内存中的相应实例,找到了以后,将资源计数器+1,并不会在内存中重新声明内存地址空间,他是受GC限制的,当编译器运行完毕后,会自动将资源编译器里面的该对象的资源计数器-1,如果为计数器0的话就自动释放该对象。

2.

New的时候,调用的是那个带下划线的接口
CreateObject的时候,返回IDispatch接口
带下划线的接口是VB一种特殊方法,自VB4,Office97以后就这么
用了,以前的好象只能用IDispatch接口.

3.

还有就是要说的是那个前期绑定和后期
New是前
CreateObject是后期
因为New的时候必须加入类型库
有类型检查
而后者没有,所有的调用都可能成功,自已检查

摘自:VB中的New 与 CreateObject的区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值