Wie kann ich eine Liste durchlaufen und jedes Element abrufen?
Ich möchte, dass die Ausgabe folgendermaßen aussieht:
Console.WriteLine("amount is {0}, and type is {1}", myMoney.amount, myMoney.type);
Hier ist mein Code:
static void Main(string[] args)
{
List<Money> myMoney = new List<Money>
{
new Money{amount = 10, type = "US"},
new Money{amount = 20, type = "US"}
};
}
class Money
{
public int amount { get; set; }
public string type { get; set; }
}
c#
for-loop
collections
user1929393
quelle
quelle
foreach
klont die Objekte nicht ..Enumerator
.. erstellt, das einstruct
.. ist, das sich ebenfalls auf dem Stapel befindet. Ich verstehe also immer noch nicht ganz, worauf Sie mit Ihrem Kommentar gekommen sind.Enumerator
und keine Kopie des Objekts. Aber die Tatsache bleibt, je nachdem, was Sie tun, gibt es mehr Overhead mit einerforeach
Schleife als mit einerfor
Schleife. Ich habe gerade einen Schnelltest mit Ihrem Code mit 100.000 Einträgen in der durchgeführtList
und dieforeach
Schleife hat doppelt so lange gedauert (tatsächlich 1,9-mal so lange). Dies gilt nicht unbedingt in allen Situationen, aber in vielen. Es hängt von der Größe der Liste ab, wie viele Operationen Sie innerhalb der Schleife ausführen usw. Dies war das, worauf ich hinaus wollte.Der Vollständigkeit halber gibt es auch den LINQ / Lambda-Weg:
quelle
Genau wie jede andere Sammlung. Mit der Hinzufügung der
List<T>.ForEach
Methode.quelle
So würde ich mit mehr schreiben
functional way
. Hier ist der Code:quelle