Question

Comment puis-je créer un tableau de chaînes unidimensionnel vide ?

Était-ce utile?

La solution

Dim strEmpty (-1) comme chaîne

Autres conseils

VB est indexé à 0 dans les déclarations de tableau, donc quelque chose comme Dim myArray(10) as String vous donne 11 éléments.C'est une erreur courante lors de la traduction à partir de langages C.

Ainsi, pour un tableau vide, l’une des opérations suivantes fonctionnerait :

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

Vous n’êtes pas obligé d’inclure String deux fois et vous n’êtes pas obligé d’utiliser New.
L'une ou l'autre des solutions suivantes fonctionnera...

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

Le tableau que vous avez créé par Dim s(0) As String N'EST PAS VIDE

Dans VB.Net, l'indice que vous utilisez dans le tableau est l'index du dernier élément.VB.Net commence par défaut l'indexation à 0, vous disposez donc d'un tableau qui contient déjà un élément.

Vous devriez plutôt essayer d'utiliser System.Collections.Specialized.StringCollection ou (encore mieux) System.Collections.Generic.List(Of String).Ils reviennent à peu près à la même chose qu’un tableau de chaînes, sauf qu’ils sont bien meilleurs pour ajouter et supprimer des éléments.Et soyons honnêtes :vous créerez rarement un vide tableau de chaînes sans vouloir ajouter au moins un élément à cela.

Si vous voulez vraiment un tableau de chaînes vide, déclarez-le comme ceci :

Dim s As String()

ou

Dim t() As String

Quelque chose comme:

Dim myArray(9) as String

Vous donnerait un tableau de 10 références String (chacune pointant vers Nothing).

Si vous n'êtes pas sûr de la taille au moment de la déclaration, vous pouvez déclarer un tableau String comme ceci :

Dim myArray() as String

Et puis vous pourrez le pointer vers un tableau de chaînes de taille appropriée plus tard :

ReDim myArray(9) as String

ZombieSheep a raison d'utiliser une liste si vous ne connaissez pas la taille totale et que vous devez la remplir dynamiquement.En VB.NET, ce serait :

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

Et puis pour obtenir un tableau de cette liste :

myList.ToArray()

@Marque

Merci pour la correction.

Une autre façon de procéder :

Dim strings() As String = {}

Tester qu'il s'agit d'un tableau de chaînes vide :

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

Affichera une boîte de message disant "compte :0".

Un peu verbeux, mais auto-documenté...

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

Je ne sais pas pourquoi vous voudriez le faire, mais la méthode C# serait

string[] newArray = new string[0];

Je suppose que VB ne sera pas trop différent de cela.

Si vous construisez un tableau vide afin de pouvoir le remplir avec des valeurs plus tard, vous devriez vraiment envisager d'utiliser

List<string>

et le convertir en tableau (si vous en avez vraiment besoin sous forme de tableau) avec

newListOfString.ToArray();

Essayez ce Dim Arraystr () comme String = {}

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top