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

时间:2009-02-10 16:50:11

标签: .net vb.net arrays

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

7 个答案:

答案 0 :(得分:10)

没有区别。来自VB.NET Language Specification on Arrays

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

...

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

答案 1 :(得分:9)

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

最终,程序员开始意识到那些设计选择非常糟糕。

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

最初:

 DIM A(50)    ' define 51-element single-precision array

然后

 DIM A(50)    ' define 51-element single-precision array
 DIM A$       ' define a string

然后为了摆脱后缀,他们添加了“As {type} syntax”

 DIM A(50)    ' define 51-element single-precision array
 DIM B as String 
 DIM C(50) as String ' define 51-element string array.

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

 DIM A()    ' define single-precision array
 DIM B as String 
 DIM C() as String ' define string array.

这在定义风格上留下了冲突,所以他们同时允许:

 DIM A()    ' define single-precision array
 DIM B as String 
 DIM C() as String ' define string array.
 DIM D as String() ' define string array.

答案 2 :(得分:3)

没有区别。

Dim v As String()Dim v() As String都会创建一个字符串数组

答案 3 :(得分:2)

传统上,在Basic中,您可以将括号放在变量名后面。在VB.Net中,如果您愿意,可以将它们放在类型之后。结果是相同的,因此使用任一语法都没有区别。这个添加的原因是因为你可以如何构建一个数组。请考虑以下代码:

  Public Sub MethodThatExpectsAnArray(ByVal arr() As String)
    '...
  End Sub

  Public Sub Main()
    Me.MethodThatExpectsAnArray(New String() {"Hello", "World"})
  End Sub

在调用中,我“动态”构造数组而没有任何赋值,除了直接到方法参数。由于此处没有变量,我必须在类型后面设置paranthesis。为了允许这种语法,Microsoft可以选择更改传统方式在Basic中声明数组的方式或允许两种语法。他们当然选择了后者。

答案 4 :(得分:1)

没有区别。

答案 5 :(得分:1)

这主要是语义学。第一个读取为create variable "v" of type string array,第二个读取为create array "v" of type string。无论哪种方式,结果都是相同的字符串数组。

答案 6 :(得分:0)

两者的含义没有区别。

如果您想在一个dim语句中声明多个变量,第二个表单提供了更大的灵活性: dim v(),v2 as string允许您在同一语句中声明数组类型和非数组类型。