Frage

Ich neige dazu Arraylisten von Strukturen zu verwenden. Es ist dann sehr einfach, um durch die Liste mit einer foreach.

Das Problem, das ich habe, ist ich ein foreach verwenden kann nicht die Strukturen Inhalt zu ändern und ein für und chaotisch Umwandlungen verwenden.

((dataStructure)files[x]).name = here;

Gibt es einen sauberere Weg, es zu tun?

War es hilfreich?

Lösung

Ich weiß, das klingt simpel, aber nur nein sagen zu wandelbaren Werttypen .

Sie sind fast nie die richtige Lösung für das Problem. Es gibt eine sehr auf wenige Ausnahmen, aber Klassen sind fast immer der Weg zu gehen.

Darüber hinaus, wenn Sie wirklich ein ArrayList dann unter Verwendung finden Sie bereits ein Unboxing Kosten werden entstehen ... (Wie Konrad sagt, wenn Sie .NET 2.0 dann Generika verwenden können.)

Wenn Sie wirklich auf der Verwendung wandelbare Strukturen bestehen, dann eine for Schleife anstelle von foreach. Aber bitte, bitte trotzdem Klassen ändern.

Andere Tipps

Ja, es ist: eine nicht typisierte ArrayList verwenden, werden diese Typen zugunsten der generischen Typen in System.Collections.Generic veraltet. In Ihrem Fall. List<T>

Sie können es immer noch nicht mit einer foreach Schleife in Verbindung verwenden, um Struktur-Werte zu ändern, aber zumindest Sie müssen nicht gegossen.

Mit der generic Version von ArrayList. List<DataStructure>

Auf diese Weise sieht die Sache viel besser:

files[x].name = here;

Ja, es gibt Fälle, in denen List <T> auch nicht sinnvoll ist. In diesen Fällen ist die älteste Trick in den manuellen Arbeiten. Statt foreach, sollten Sie while-Schleife verwenden:

while (listItem.Count >0)
{
//do operation with 0th element of List Item always like
 deletefunc(lisItem[0]);
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top