Pregunta

¿Cómo puedo crear una matriz de cadenas unidimensional vacía?

¿Fue útil?

Solución

Dim strEmpty(-1) como cadena

Otros consejos

VB es 0 indexado en declaraciones de matriz, algo así como Dim myArray(10) as String te dio 11 elementos.Es un error común al traducir desde lenguajes C.

Entonces, para una matriz vacía, cualquiera de las siguientes opciones funcionaría:

Dim str(-1) as String ' -1 + 1 = 0, so this has 0 elements
Dim str() as String = New String() { } ' implicit size, initialized to empty

No es necesario incluir String dos veces y no es necesario utilizar New.
Cualquiera de los siguientes funcionará...

Dim strings() as String = {}
Dim strings as String() = {}

La matriz que creaste Dim s(0) As String NO ESTÁ VACÍO

En VB.Net, el subíndice que usa en la matriz es el índice del último elemento.VB.Net de forma predeterminada comienza a indexar en 0, por lo que tiene una matriz que ya tiene un elemento.

En su lugar deberías intentar usar System.Collections.Specialized.StringCollection o mejor) System.Collections.Generic.List(Of String).Equivalen prácticamente a lo mismo que una matriz de cadenas, excepto que son mucho mejores para agregar y eliminar elementos.Y seamos honestos:rara vez crearás un vacío matriz de cadenas sin querer agregar al menos un elemento.

Si realmente quieres una matriz de cadenas vacía, declarala así:

Dim s As String()

o

Dim t() As String

Algo como:

Dim myArray(9) as String

Le daría una serie de 10 referencias de cadenas (cada una apuntando a Nada).

Si no está seguro del tamaño en el momento de la declaración, puede declarar una matriz de cadenas como esta:

Dim myArray() as String

Y luego puedes apuntar a una matriz de cadenas del tamaño adecuado más adelante:

ReDim myArray(9) as String

ZombieSheep tiene razón al usar una Lista si no conoce el tamaño total y necesita completarla dinámicamente.En VB.NET eso sería:

Dim myList as New List(Of String)
myList.Add("foo")
myList.Add("bar")

Y luego para obtener una matriz de esa Lista:

myList.ToArray()

@Marca

Gracias por la corrección.

Otra forma de hacer esto:

Dim strings() As String = {}

Probando que es una matriz de cadenas vacía:

MessageBox.Show("count: " + strings.Count.ToString)

Mostrará un cuadro de mensaje que dice "contar:0".

Un poco detallado, pero autodocumentado...

Dim strEmpty() As String = Enumerable.Empty(Of String).ToArray

No estoy seguro de por qué querrías hacerlo, pero la forma C# sería

string[] newArray = new string[0];

Supongo que VB no será muy diferente a esto.

Si está creando una matriz vacía para poder completarla con valores más adelante, realmente debería considerar usar

List<string>

y convertirlo en una matriz (si realmente lo necesita como matriz) con

newListOfString.ToArray();

Pruebe este dim arraystr () como string = {}

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top