所以有一个question on what DIM
is,但我找不到为什么要使用它。
据我所知,我发现这三组代码没有区别:
'Example 1
myVal = 2
'Example 2
DIM myVal as Integer
myVal = 2
'Example 3
DIM myVal = 2
如果省略DIM
代码仍然运行,并且在2或3个嵌套循环之后,我看到省略它们时输出没有区别。来自Python,我喜欢保持我的代码干净*。
那么为什么我需要使用DIM
声明变量?除了风格问题之外,是否有使用DIM
的技术原因?
*我也很懒惰而且没有宣布变量的习惯。
答案 0 :(得分:10)
使用Dim
可以明确显示代码的意图,并防止常见错误,例如拼写错误实际声明新变量。如果您在代码中使用Option Explicit On
(我完全建议),Dim
成为强制性的。
以下是未能使用Dim
导致(可能是错误的)问题的示例:
myVar = 100
' later on...
myVal = 10 'accidentally declare new variable instead of assign to myVar
Debug.Print myVar 'prints 100 when you were expecting 10
而此代码可以帮助您避免错误:
Option Explicit
Dim myVar as Integer
myVar = 100
' later on...
myVal = 10 ' error: Option Explicit means you *must* use Dim
有关Dim和Option明确的更多信息,请访问:http://msdn.microsoft.com/en-us/library/y9341s4f.aspx
答案 1 :(得分:10)
在没有声明的情况下使用的任何变量都是Variant
类型。虽然变体在某些情况下可能有用,但在不需要时应避免使用变体,因为它们:
答案 2 :(得分:5)
主持人,我正在努力,假设你在未来会给予我应有的尊重。
与所有语言(以及函数的大多数参数)一样,所有局部变量都存储在堆栈中。当子退出时,堆栈将返回到子执行之前的状态。所以所有的内存都被释放了。字符串和对象存储在对象管理器或字符串管理器中的其他位置,并且堆栈包含指针,但vb会在释放它之后进行查找。将vbstring(a bstr)设置为零长度可以释放除两个字节之外的所有字节。这就是我们试图避免全局变量的原因。
在脚本类型程序中,无类型编程具有许多优点。程序很短,使用的变量很少,因此内存和速度并不重要 - 它足够快。随着程序越来越复杂,它确实很重要。 VB专为无类型编程和类型编程而设计。对于大多数excel宏,无类型编程很好并且更具可读性。 Vbscript仅支持无类型编程(您可以将其粘贴到vba / vb6中)。