Matriz de cadenas vacías de VB.NET
Pregunta
¿Cómo puedo crear una matriz de cadenas unidimensional vacía?
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 = {}