CreateObject 和New的区别是什么
展开全部
1 . createobject与new 本质的不同。
createobject与new 的关键区别就是声明后系统对资源的控制权不一样。
createobject是由内存中重新创建一个实例而不是简单的资源计数器+1的概念。如果内存中存在一个这样的实例,编译器不会理会这个实例而是将对象重新创建一个。实际上是一个完全独立的新的资源实例。并且不受GC的资源回收控制,必须自己回收。
new声明的时候,编译器回自动寻找内存中的相应实例,找到了以后,将资源计数器+1,并不会在内存中重新声明内存地址空间,他是受GC限制的,当编译器运行完毕后,会自动将资源编译器里面的该对象的资源计数器-1,如果为计数器0的话就自动释放该对象。
不明白New的时候为什么是先搜索已经存在的实例,在我的理解里,New的时候应该不存在实例的,有谁能给个范例代码吗或者解释下
2.
New的时候,调用的是那个带下划线的接口
CreateObject的时候,返回IDispatch接口
带下划线的接口是VB一种特殊方法,自VB4,Office97以后就这么
用了,以前的好象只能用IDispatch接口.
带下划线的接口是什么接口
3.
还有就是要说的是那个前期绑定和后期
New是前
CreateObject是后期
因为New的时候必须加入类型库
有类型检查
而后者没有,所有的调用都可能成功,自已检查
createobject与new 的关键区别就是声明后系统对资源的控制权不一样。
createobject是由内存中重新创建一个实例而不是简单的资源计数器+1的概念。如果内存中存在一个这样的实例,编译器不会理会这个实例而是将对象重新创建一个。实际上是一个完全独立的新的资源实例。并且不受GC的资源回收控制,必须自己回收。
new声明的时候,编译器回自动寻找内存中的相应实例,找到了以后,将资源计数器+1,并不会在内存中重新声明内存地址空间,他是受GC限制的,当编译器运行完毕后,会自动将资源编译器里面的该对象的资源计数器-1,如果为计数器0的话就自动释放该对象。
不明白New的时候为什么是先搜索已经存在的实例,在我的理解里,New的时候应该不存在实例的,有谁能给个范例代码吗或者解释下
2.
New的时候,调用的是那个带下划线的接口
CreateObject的时候,返回IDispatch接口
带下划线的接口是VB一种特殊方法,自VB4,Office97以后就这么
用了,以前的好象只能用IDispatch接口.
带下划线的接口是什么接口
3.
还有就是要说的是那个前期绑定和后期
New是前
CreateObject是后期
因为New的时候必须加入类型库
有类型检查
而后者没有,所有的调用都可能成功,自已检查
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询