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
DDDoriginal
2025-01-27 18:06:11232parcourir

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 :

<code class="language-csharp">foreach (var item in Model.Select((value, i) => new { i, value }))
{
    var value = item.value;
    var index = item.i;
}</code>

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 :

<code class="language-csharp">foreach (var item in Model.Select((value, i) => (value, i)))
{
    var value = item.value;
    var index = item.i;
}</code>

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

<code class="language-csharp">foreach (var (value, i) in Model.Select((value, i) => (value, i)))
{
    // 直接在此处访问 `value` 和 `i`。
}</code>

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:
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