Tableau de chaînes vide VB.NET
Question
Comment puis-je créer un tableau de chaînes unidimensionnel vide ?
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 = {}