Okay, jetzt, wo wir Ihr wissen Ziel statt, wie Sie es zu erreichen versuchten, es ist viel einfacher, Beantworten Sie Ihre Frage: Sie sollten keine foreach
Schleife verwenden. foreach
ist über lesen Elemente aus einer Sammlung - nicht den Inhalt einer Sammlung zu ändern. Es ist eine gute Arbeit, dass der C# -Compiler die Iterationsvariable schreibgeschützt macht, sonst hätte man den Wert der Variablen ändern können, ohne dass die Sammlung geändert wird. (Es müssten mehr wesentliche Änderungen sein Änderungen zu ermöglichen, reflektiert werden ...)
Ich vermute, Sie wollen einfach nur:
for (int i = 0; i < array.GetLength(0); i++)
{
for (int j = 0; j < array.GetLength(1); j++)
{
array[i, j] = new Item();
}
}
, dass es eine rechteckige Anordnung ist vorausgesetzt (ein Item[,]
). Wenn es ein Item[][]
ist, dann ist es ein Array von Arrays, und Sie würden, dass etwas anders handhaben - möglicherweise mit einem foreach
für die äußere Iteration:
foreach (var subarray in array)
{
for (int i = 0; i < subarray.Length; i++)
{
subarray[i] = new Item();
}
}
Warum nicht benutzen Sie einfach eine andere Variable? – sczdavos
@ sczdavos wie genau? – user1306322
'var myItem; foreach (var Artikel in twoDimArray) myItem = new Item(); ' – sczdavos