À l'aide d'un 'foreach' boucle avec stringArray en C#
Je suis en train d'écrire un programme qui devrait afficher les éléments d'un tableau dans une boucle foreach.
Je voulais changer les éléments de la matrice par l'ajout d'une chaîne de "triste" pour chaque élément, mais lors de l'exécution du programme, le tableau reste le même.
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
string[] stringArray = {"hey", "Tom"};
for (int i = 0; i < stringArray.Length; i++ )
{
stringArray[i] += " dad";
Console.WriteLine(stringArray[i]);
}
Array.Resize(ref stringArray, stringArray.Length + 1);
//Add bob to the last element of the array
stringArray[stringArray.Length - 1] =" bob";
foreach (string s in stringArray)
{
string b = s + "sad";
Console.WriteLine(s);
//Console.WriteLine(stringArray);
}
}
}
}
Vous devriez changer de chaîne b = s + "triste"; string s += "triste";
possible faute de frappe
possible faute de frappe
Console.WriteLine(b);
au lieu de Console.WriteLine(s);
OriginalL'auteur user2371290 | 2013-05-12
Vous devez vous connecter pour publier un commentaire.
En dehors de ce que Chris l'a dit, vous pouvez tout simplement utiliser LINQ pour atteindre ce que vous voulez:
OriginalL'auteur Rango
Ici, vous êtes à la création d'une nouvelle chaîne, complètement étranger à la chaîne dans la chaîne de tableau. Vous n'avez pas changé la vieille chaîne (vous ne pouvez pas, les cordes sont immuables). Il vous suffit ensuite de déposer cette nouvelle, plus longue chaîne sur le sol - vous n'êtes pas la mise à jour de la matrice etc.
Essayez plutôt quelque chose comme:
Ce remplace chaque élément d'un tableau avec une nouvelle chaîne. Notez que vous ne pouvez pas mettre à jour une liste/collection/tableau etc lors de l'itération avec
foreach
- qui peut casser l'itérateur. D'où lafor
boucle à la place.OriginalL'auteur Marc Gravell
À aucun moment, dans votre code-vous de modifier les valeurs dans le tableau. Vous créez un nouveau
string
de chaque valeur dans le tableau, concaténé avec la chaîne"sad"
.la Solution
Vous ne pouvez pas modifier un
for-each
variable. Vous aurez un message comme:Au lieu de cela, se contenter d'un simple
for
boucle.OriginalL'auteur christopher
Oeil à cette partie du code:
Vous êtes de la concaténation de la chaîne dans
s
avec la chaîne"sad"
, et le stocker dans la variableb
. Ensuite vous afficher le contenu de la variables
. Si vous souhaitez afficher le contenu de la variableb
plutôt que, il y aurait unsad
à la fin de chaque chaîne.OriginalL'auteur Guffa