代码之家  ›  专栏  ›  技术社区  ›  Shay Ribera

VBA中的As String vs As String()

  •  0
  • Shay Ribera  · 技术社区  · 4 年前

    这听起来可能微不足道,但这两者之间有什么区别呢

    Dim v As String()
    

    Dim v() As String
    

    在VB.NET?

    0 回复  |  直到 5 年前
        1
  •  11
  •   Zach Scrivena    15 年前

    VB.NET Language Specification on Arrays :

    数组类型是通过向现有的 类型名称 . 修饰符由左括号、一组零个或多个逗号和一个右括号组成。

    ...

    还可以通过在 变量名 为清楚起见,在同一声明中同时对变量名和类型名同时使用数组类型修饰符是无效的 .

        2
  •  10
  •   James Curran    11 年前

    最初,在Basic中,必须定义数组,但不能定义变量。变量的类型是由后缀字符定义的: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}语法”

     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.
    
        3
  •  3
  •   Sean    13 年前

    没有区别。

    Dim v As String() Dim v() As String

        4
  •  2
  •   Joacim Andersson    15 年前

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

        5
  •  1
  •   Kibbee    15 年前

    没有区别。

        6
  •  1
  •   Joel Coehoorn    15 年前

    主要是语义学。第一个读作 create variable "v" of type string array create array "v" of type string . 不管怎样,结果都是相同的字符串数组。

        7
  •  0
  •   Renze de Waal    15 年前

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