当我在Excel VBA中启动字典对象时,我发现了两种方法:
CreateObject("Scripting.Dictionary")
(无“Microsoft Scripting Runtime”); Dim dict As New Scripting.Dictionary
它们都可以在我的机器上运行。我想知道这两种方法有什么区别吗?
答案 0 :(得分:5)
我知道的唯一区别是第一个使用Late bind
而第二个使用Early bind
。两者之间的差异解释为here。
早期绑定具有优势。其中一个是您可以使用Intellisense
来指导您可以在编码中使用的绑定对象的可用属性。而且,据说它在性能方面更快。您也可以使用内置常量。无需检查它的等价值。这是讨论here。
如果绑定具有不同版本的对象,则后期绑定也具有优势。这降低了由于版本不兼容而导致运行时错误的风险(也在第1个链接中提到)。
至于我,我总是在开发过程中使用Early bind,因此我可以使用Intellisense
。如果需要转换为Late bind,我会在我或客户进行强大测试之后再做。
其他强>
当您使用CPearson在其帖子here中讨论的早期绑定Don't Use Auto-Instancing Object Variables
时。以下是他博客的摘录。
对于对象类型变量,可以在Dim语句中包含New关键字。这样做可以创建所谓的自动实例化变量。同样,虽然这似乎很方便,但应该避免。与某些程序员可能认为的相反,在处理变量声明时不会创建对象。相反,在代码中第一次遇到对象时会创建该对象。这意味着,首先,在创建对象时,您的控制有限。其次,这意味着您无法测试对象是否为Nothing,代码中的常见测试以及常见的测试和诊断技术。
设置变量的更好方法是:
Dim dict As Scripting.Dictionary
Set dict = New Scripting.Dictionary