Jak mogę przejrzeć listę i złapać każdy przedmiot?
Chcę, aby wynik wyglądał następująco:
Console.WriteLine("amount is {0}, and type is {1}", myMoney.amount, myMoney.type);
Oto mój kod:
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
źródło
źródło
foreach
nie klonuje obiektów ...Enumerator
.., który jeststruct
.., który również znajduje się na stosie. Więc nadal nie do końca rozumiem, o co ci chodzi w komentarzu.Enumerator
kopia, a nie kopia obiektu. Ale fakt pozostaje faktem, w zależności od tego, co robisz,foreach
pętla jest bardziej obciążona niżfor
pętla. Właśnie przeprowadziłem szybki test z twoim kodem ze 100 000 wpisów w pętli,List
aforeach
pętla trwała dwa razy dłużej (właściwie 1,9 razy dłużej). Nie zawsze jest to prawdą we wszystkich sytuacjach, ale w wielu. Zależy to od rozmiaru listy, liczby operacji wykonywanych w pętli, itp.… Właśnie o to mi chodziło.Dla kompletności istnieje również sposób LINQ / Lambda:
źródło
Jak każda inna kolekcja. Z dodatkiem
List<T>.ForEach
metody.źródło
Tak napisałbym używając więcej
functional way
. Oto kod:źródło