new - vb.net list
¿Cuál es la diferencia entre Dim v As String() y Dim v() As String? (7)
Esto puede sonar trivial, pero ¿cuál es la diferencia entre Dim v As String () y Dim v () As String en VB.NET?
Es principalmente semántica. La primera se lee como create variable "v" of type string array
y la 2da lee como create array "v" of type string
. De cualquier manera, el resultado es la misma matriz de cadenas.
Ninguna diferencia. De la especificación de lenguaje VB.NET en matrices :
Los tipos de matriz se especifican agregando un modificador a un nombre de tipo existente. El modificador consiste en un paréntesis izquierdo, un conjunto de cero o más comas, y un paréntesis derecho.
...
También se puede declarar que una variable es de un tipo de matriz al poner un modificador de tipo de matriz o un modificador de inicialización de matriz en el nombre de la variable . En ese caso, el tipo de elemento de matriz es el tipo dado en la declaración, y las dimensiones de la matriz están determinadas por el modificador de nombre de variable. Para mayor claridad, no es válido tener un modificador de tipo de matriz tanto en un nombre de variable como en un nombre de tipo en la misma declaración .
No hay diferencia en el significado de los dos.
Si desea declarar varias variables en una declaración dim, la segunda forma proporciona más flexibilidad: dim v (), v2 como cadena le permite declarar tipos de matriz y no matriz en la misma declaración.
No hay diferencia.
Tradicionalmente, en Basic, pondría el paréntesis después del nombre de la variable. En VB.Net está permitido ponerlos después del tipo en su lugar si lo desea. El resultado es el mismo, por lo tanto, no hay diferencia con la sintaxis. Sin embargo, el motivo de esta adición es porque puedes construir una matriz. Considera el siguiente código:
Public Sub MethodThatExpectsAnArray(ByVal arr() As String)
''...
End Sub
Public Sub Main()
Me.MethodThatExpectsAnArray(New String() {"Hello", "World"})
End Sub
En la llamada, construyo la matriz "sobre la marcha" sin ninguna asignación, excepto directamente al argumento del método. Como aquí no hay ninguna variable, debo configurar la paranthesis después del tipo. Para permitir esta sintaxis, Microsoft tuvo la opción de cambiar la forma tradicional en que declaras las matrices en Basic o permitir ambas sintaxis. Por supuesto, optaron por lo último.
No hay diferencia.
Tanto Dim v As String()
como Dim v() As String
crearán una matriz de cadenas
Originalmente, en Basic, tenía que definir matrices, pero no variables. Y los tipos de variables se definieron por un carácter de sufijo: A $ era una cadena, mientras que A% era un número entero y A # era de doble precisión. (y los tres eran distintos y se podían usar al mismo tiempo) (Para la precisión simple, se podía usar A !, pero ese era el valor predeterminado si se usaba A)
Eventualmente, los programadores se dieron cuenta de que esas eran opciones de diseño increíblemente malas.
Para rectificar esto, Microsoft agregó "Option Explicit" que requería predefinir cada variable. Para disminuir el efecto en el lenguaje, secuestran el comando "DIM", que se usó para definir matrices, para definir también variables escalares.
Así que originalmente:
DIM A(50) '' define 51-element single-precision array
Entonces
DIM A(50) '' define 51-element single-precision array
DIM A$ '' define a string
Luego, para deshacerse de los sufijos, agregaron la sintaxis "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.
Luego hicieron que el tamaño de la matriz sea variable.
DIM A() '' define single-precision array
DIM B as String
DIM C() as String '' define string array.
Esto dejó un conflicto en el estilo de definición, por lo que permitieron ambos:
DIM A() '' define single-precision array
DIM B as String
DIM C() as String '' define string array.
DIM D as String() '' define string array.