Dim v As String()和Dim v()As String有什么区别?

Vin*_*ent 15 .net vb.net arrays

这可能听起来微不足道,但是在VB.NET中Dim v As String()和Dim v()As String之间有什么区别?

Zac*_*ena 11

没有不同.从阵列上VB.NET语言规范:

通过向现有类型名称添加修饰符来指定数组类型.修饰符由左括号,一组零或多个逗号和右括号组成.

...

通过在变量名上放置数组类型修饰符或数组初始化修饰符,也可以将变量声明为数组类型.在这种情况下,数组元素类型是声明中给出的类型,数组维度由变量名称修饰符确定.为清楚起见,在同一声明中的变量名和类型名上都有一个数组类型修饰符是无效的.


Jam*_*ran 10

最初,在Basic中,您必须定义数组,而不是变量.变量的类型由后缀字符定义:A $是一个字符串,而A%是一个整数,A#是双精度.(并且所有三个都是截然不同的,可以同时使用)(对于单精度,你可以使用A !,但如果你刚用A,这是默认的)

最终,程序员逐渐意识到那些设计选择非常糟糕.

为了解决这个问题,微软增加了"Option Explicit",它要求你预定义每个变量.为了减轻对语言的影响,他们劫持了用于定义数组的"DIM"命令,以定义标量变量.

原来:

 DIM A(50)    ' define 51-element single-precision array
Run Code Online (Sandbox Code Playgroud)

然后

 DIM A(50)    ' define 51-element single-precision array
 DIM A$       ' define a string
Run Code Online (Sandbox Code Playgroud)

然后为了摆脱后缀,他们添加了"As {type}语法"

 DIM A(50)    ' define 51-element single-precision array
 DIM B as String 
 DIM C(50) as String ' define 51-element string array.
Run Code Online (Sandbox Code Playgroud)

然后他们制作了数组大小变量.

 DIM A()    ' define single-precision array
 DIM B as String 
 DIM C() as String ' define string array.
Run Code Online (Sandbox Code Playgroud)

这在定义风格上留下了冲突,因此他们允许:

 DIM A()    ' define single-precision array
 DIM B as String 
 DIM C() as String ' define string array.
 DIM D as String() ' define string array.
Run Code Online (Sandbox Code Playgroud)