[C#] List <T>를 반복하고 각 항목을 잡을 수 있습니까?

List를 반복하고 각 항목을 가져 오는 방법은 무엇입니까?

출력이 다음과 같이 보이기를 원합니다.

Console.WriteLine("amount is {0}, and type is {1}", myMoney.amount, myMoney.type);

내 코드는 다음과 같습니다.

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; }
}



답변

foreach:

foreach (var money in myMoney) {
    Console.WriteLine("Amount is {0} and type is {1}", money.amount, money.type);
}

MSDN 링크

또는 List<T>인덱서 메소드를 구현하는 .. 이므로 []일반 for루프도 사용할 수 있습니다 . 비록 덜 읽기 쉬운 (IMO) :

for (var i = 0; i < myMoney.Count; i++) {
    Console.WriteLine("Amount is {0} and type is {1}", myMoney[i].amount, myMoney[i].type);
}


답변

완전성을 위해 LINQ / Lambda 방식도 있습니다.

myMoney.ForEach((theMoney) => Console.WriteLine("amount is {0}, and type is {1}", theMoney.amount, theMoney.type));


답변

다른 컬렉션과 마찬가지로. List<T>.ForEach방법을 추가 함 .

foreach (var item in myMoney)
    Console.WriteLine("amount is {0}, and type is {1}", item.amount, item.type);

for (int i = 0; i < myMoney.Count; i++)
    Console.WriteLine("amount is {0}, and type is {1}", myMoney[i].amount, myMoney[i].type);

myMoney.ForEach(item => Console.WriteLine("amount is {0}, and type is {1}", item.amount, item.type));


답변

이것이 내가 더 사용하여 쓰는 방법 functional way입니다. 코드는 다음과 같습니다.

new List<Money>()
{
     new Money() { Amount = 10, Type = "US"},
     new Money() { Amount = 20, Type = "US"}
}
.ForEach(money =>
{
    Console.WriteLine($"amount is {money.Amount}, and type is {money.Type}");
});


답변