Comment puis-je parcourir une liste et saisir chaque élément?
Je veux que la sortie ressemble à ceci:
Console.WriteLine("amount is {0}, and type is {1}", myMoney.amount, myMoney.type);
Voici mon 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
la source
la source
foreach
ne clone pas les objets ..Enumerator
.. qui est unstruct
.. qui est également sur la pile. Je ne comprends donc toujours pas exactement ce que vous vouliez dire avec votre commentaire.Enumerator
copie et non une copie de l'objet. Mais le fait demeure, selon ce que vous faites, il y a plus de surcharge avec uneforeach
boucle qu'avec unefor
boucle. Je viens de lancer un test rapide avec votre code avec 100000 entrées dans leList
et laforeach
boucle a pris deux fois plus de temps (en fait 1,9 fois plus longtemps). Ce n'est pas nécessairement vrai dans toutes les situations, mais dans beaucoup. Cela dépend de la taille de la liste, du nombre d'opérations que vous effectuez dans la boucle, etc. C'est ce à quoi je voulais en venir.Pour être complet, il existe également la méthode LINQ / Lambda:
la source
Comme toute autre collection. Avec l'ajout de la
List<T>.ForEach
méthode.la source
C'est ainsi que j'écrirais en utilisant plus
functional way
. Voici le code:la source