在声明一个字节数组时,以下两种方式有什么区别?它们是一样的吗?还是只是两种不同的实现方式?
Dim var1 As Byte()
Dim var2() As Byte
它们是相同的东西。您可以通过反射器查看编译代码或在IDE中编写该代码,然后将鼠标悬停在每个上面来验证。
它们报告为“var1() as byte”和“var2() as byte”,即使第一个是使用替代语法声明的。
没有区别。
来自规范的引用(2003年规范,但与2010年规范相同,可以从此处下载):
通过向现有类型名称添加修饰符来指定数组类型。
也可以通过在变量名上放置数组类型修饰符或数组初始化修饰符来声明变量为数组类型。
为了清晰起见,在同一声明中在变量名和类型名上都使用数组类型修饰符是无效的。
以下是规范中显示所有选项的示例:
Module Test
Sub Main()
Dim a1() As Integer ' Declares 1-dimensional array of integers.
Dim a2(,) As Integer ' Declares 2-dimensional array of integers.
Dim a3(,,) As Integer ' Declares 3-dimensional array of integers.
Dim a4 As Integer() ' Declares 1-dimensional array of integers.
Dim a5 As Integer(,) ' Declares 2-dimensional array of integers.
Dim a6 As Integer(,,) ' Declares 3-dimensional array of integers.
' Declare 1-dimensional array of 2-dimensional arrays of integers
Dim a7()(,) As Integer
' Declare 2-dimensional array of 1-dimensional arrays of integers.
Dim a8(,)() As Integer
Dim a9() As Integer() ' Not allowed.
End Sub
End Module
从评论中可以看出,a1和a4做的是同样的事情。