Créer un tableau d'objet c # de longueur indéfinie?
Je voudrais créer un tableau d'objets en C# de indéfinie de la longueur, puis remplir le tableau dans une boucle comme si...
string[] splitWords = message.Split(new Char[] { ' ' });
Word[] words = new Word[];
int wordcount = 0;
foreach (string word in splitWords)
{
if (word == "") continue;
words[wordcount] = new Word(word);
wordcount++;
}
Cependant, j'obtiens l'erreur...
"La création de la matrice doit avoir la taille du tableau ou d'une matrice, d'initialiseur"
Je suis en train de faire beaucoup plus de logique dans la boucle foreach que j'ai laissé de côté pour des raisons de concision.
source d'informationauteur Lyndal
Vous devez vous connecter pour publier un commentaire.
Ce que vous voulez faire est de créer:
et puis:
Et, enfin, quand la boucle est terminée, si vous avez besoin d'un tableau:
Si vous êtes à l'aide de C# 3.5, vous pouvez faire ce qui suit.
Vous ne pouvez pas créer un tableau de longueur indéfinie. C'est là que vous pouvez utiliser une Liste générique.
Une sympathique note, vous pouvez passer à l'option de split à ignorer les entrées vides. En supposant qu'aucun autre logique pour élaguer les entrées que vous pouvez preinitialize votre tableau comme suit:
Effectivement vous pouvez utiliser la liste pour remplir vos mots d'abord et ensuite de les convertir facilement à un tableau comme ceci:
Je me demandais pourquoi ne peut-on pas utiliser une variable de type string (dire
x
), d'initialiser et de récupérer séparées par des virgules données et de les utiliser plus tardstring[]
variable (disonsy[]
) et l'initialiser égal àx.Split(',')
sans avoir à initialiser un tableau vide comme suit:Je pense que cela devrait fonctionner, mais je n'ai pas essayer donc je ne suis pas sûr. Si quelqu'un pense que ma solution est fausse, corrigez-moi.
Je l'ai résolu en utilisant une liste de tableaux et puis un moulage de l'objet de tableau après l'itération...
J'ai entendu l'ensemble de "créer de question/réponse, juste pour document pour les autres" est acceptable. Plus je voudrais savoir si il y a de meilleures suggestions. Merci.