Domanda

Come posso creare un array di stringhe unidimensionali vuoto?

È stato utile?

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 = {}

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top