Maison > développement back-end > C++ > Comment puis-je obtenir l'indice de l'itération actuelle dans une boucle C # foreach?

Comment puis-je obtenir l'indice de l'itération actuelle dans une boucle C # foreach?

DDD
Libérer: 2025-01-27 18:06:11
original
278 Les gens l'ont consulté

How Can I Get the Index of the Current Iteration in a C# Foreach Loop?

Utiliser l'index d'itération dans la boucle foreach

Obtenir l'index de l'itération actuelle dans une boucle foreach est une tâche de programmation courante. Bien que C# ne fournisse pas de solution intégrée, il possède une structure unique qui répond à ce besoin.

Solution : exploiter les objets sélectionnés et anonymes

Une solution consiste à profiter de la méthode Select de LINQ, qui fournit une surcharge qui vous permet de spécifier une fonction qui prend la valeur et l'index comme paramètres. En sélectionnant l'index dans cette fonction vous créez un objet anonyme contenant la valeur et l'index :

foreach (var item in Model.Select((value, i) => new { i, value }))
{
    var value = item.value;
    var index = item.i;
}
Copier après la connexion

Optimisation : utilisation de ValueTuple et déstructuration automatique

Si vous utilisez C# 7.0 ou version ultérieure, vous pouvez utiliser un ValueTuple au lieu d'un objet anonyme pour éviter l'allocation de tas :

foreach (var item in Model.Select((value, i) => (value, i)))
{
    var value = item.value;
    var index = item.i;
}
Copier après la connexion

De plus, la déstructuration automatique élimine le besoin d'un accès explicite aux propriétés :

foreach (var (value, i) in Model.Select((value, i) => (value, i)))
{
    // 直接在此处访问 `value` 和 `i`。
}
Copier après la connexion

En combinant ces constructions, vous pouvez facilement récupérer l'index de l'itération en cours dans une boucle foreach C#, augmentant ainsi la précision et la flexibilité de votre code.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal