Matrice di stringhe vuota VB.NET
Domanda
Come posso creare un array di stringhe unidimensionali vuoto?
Soluzione
Dim strEmpty(-1) come stringa
Altri suggerimenti
VB lo è 0-indicizzato nelle dichiarazioni di array, quindi sembra qualcosa del genere Dim myArray(10) as String
ti dà 11 elementi.È un errore comune quando si traduce da linguaggi C.
Quindi, per un array vuoto, funzionerebbe una delle seguenti operazioni:
Dim str(-1) as String ' -1 + 1 = 0, so this has 0 elements
Dim str() as String = New String() { } ' implicit size, initialized to empty
Non è necessario includere String due volte e non è necessario utilizzare New.
Funzionerà una delle seguenti operazioni...
Dim strings() as String = {}
Dim strings as String() = {}
L'array creato da Dim s(0) As String
NON È VUOTO
In VB.Net, l'indice che usi nell'array è l'indice dell'ultimo elemento.VB.Net per impostazione predefinita inizia l'indicizzazione da 0, quindi hai un array che ha già un elemento.
Dovresti invece provare a usare System.Collections.Specialized.StringCollection
o (ancora meglio) System.Collections.Generic.List(Of String)
.Equivalgono più o meno alla stessa cosa di un array di stringhe, tranne che sono molto migliori per aggiungere e rimuovere elementi.E siamo onesti:raramente creerai un file vuoto array di stringhe senza voler aggiungere almeno un elemento ad esso.
Se vuoi davvero un array di stringhe vuoto, dichiaralo in questo modo:
Dim s As String()
O
Dim t() As String
Qualcosa di simile a:
Dim myArray(9) as String
Ti fornirebbe una serie di 10 riferimenti a stringhe (ciascuno che punta a Niente).
Se non sei sicuro della dimensione al momento della dichiarazione, puoi dichiarare un array String in questo modo:
Dim myArray() as String
E poi puoi puntarlo su un array di stringhe di dimensioni adeguate in seguito:
ReDim myArray(9) as String
ZombieSheep ha ragione nell'usare un elenco se non conosci la dimensione totale e devi popolarlo dinamicamente.In VB.NET sarebbe:
Dim myList as New List(Of String)
myList.Add("foo")
myList.Add("bar")
E poi per ottenere un array da quell'elenco:
myList.ToArray()
@Segno
Grazie per la correzione.
Un altro modo per farlo:
Dim strings() As String = {}
Verifica che si tratti di un array di stringhe vuoto:
MessageBox.Show("count: " + strings.Count.ToString)
Mostrerà una finestra di messaggio che dice "conta:0".
Un po' prolisso, ma autodocumentante...
Dim strEmpty() As String = Enumerable.Empty(Of String).ToArray
Non sono sicuro del motivo per cui vorresti farlo, ma il modo C# lo sarebbe
string[] newArray = new string[0];
Immagino che VB non sarà troppo dissimile da questo.
Se stai creando un array vuoto in modo da poterlo popolare con valori in un secondo momento, dovresti davvero prendere in considerazione l'utilizzo
List<string>
e convertendolo in un array (se ne hai davvero bisogno come array) con
newListOfString.ToArray();
Prova questo DIM ArrayStr () come String = {}