Comment puis-je créer un tableau de chaînes de caractères unidimensionnel vide ?
Je fais toujours Dim str() as String = New String() { } parce que je pense que c'est la meilleure façon de voir qu'il s'agit d'un tableau de chaînes VIDE "{ }".
Comment puis-je créer un tableau de chaînes de caractères unidimensionnel vide ?
VB est Indexation à 0 dans les déclarations de tableaux donc quelque chose comme Dim myArray(10) as String
vous donne 11 éléments. Il s'agit d'une erreur courante lors de la traduction de langues C.
Ainsi, pour un tableau vide, l'une ou l'autre des méthodes 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
Je fais toujours Dim str() as String = New String() { } parce que je pense que c'est la meilleure façon de voir qu'il s'agit d'un tableau de chaînes VIDE "{ }".
Mark, Dim str(0) produit un tableau d'une longueur de 1 avec un NULL à l'index 0. La seconde, Dim str()...{ } produit un tableau vide avec une longueur de zéro comme le voulait YonahW.
@RandyEppinger a raison (et ce depuis 3 ans...). str(0) produit un tableau de longueur 1 (étant indexé à 0, la longueur est +1 dans la déclaration). J'aurais dû mettre str(-1) (qui, lorsque +1 vous donne une longueur de 0).
Upvote parce que c'est correct. Cependant, pour plus de clarté, je préfère Dim strEmpty() As String = New String() {} comme Mark le propose et SoMoS l'approuve. Cependant, Mark décrit deux techniques qui ne sont pas équivalentes...voir ce commentaire.
Mise à jour...Nous avons trouvé le suivant qui est équivalent et qui a moins de cérémonie : Dim myArray() = New String() {}
Le tableau que vous avez créé par Dim s(0) As String
N'EST PAS VIDE
En VB.Net, l'indice que vous utilisez dans le tableau est l'indice du dernier élément. Par défaut, VB.Net commence l'indexation à 0, vous avez donc un tableau qui a 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 de caractères, sauf qu'ils sont bien meilleurs pour ajouter et supprimer des éléments. Et soyons honnêtes : vous créerez rarement un vide sans vouloir ajouter au moins un élément à elle.
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 obtiendrez 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 de chaînes comme ceci :
Dim myArray() as String
Vous pourrez ensuite le diriger vers un tableau de cordes de taille appropriée :
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 ensuite pour obtenir un tableau à partir de cette liste :
myList.ToArray()
@Mark
Merci pour la correction.
Je ne sais pas pourquoi vous voudriez le faire, mais la méthode C# serait de
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 de valeurs plus tard, vous devriez vraiment envisager d'utiliser la fonction
List<string>
et en le convertissant en tableau (si vous en avez vraiment besoin comme tableau) avec
newListOfString.ToArray();
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
0 votes
@Pacane S'il vous plaît lisez ceci .