Maison > développement back-end > C++ > Comment puis-je accéder à l'indice d'itération actuel dans une boucle C # foreach?

Comment puis-je accéder à l'indice d'itération actuel dans une boucle C # foreach?

Barbara Streisand
Libérer: 2025-01-27 18:01:10
original
494 Les gens l'ont consulté

How Can I Access the Current Iteration Index in a C# foreach Loop?

Récupération de l'index d'itération dans une boucle C # foreach

C # 'S foreach Loop ne fournit pas intrinsèquement l'accès à l'indice d'itération. Cependant, nous pouvons habilement utiliser la méthode Select de Linq pour y parvenir.

L'approche d'Ian Mercer, en utilisant la surcharge de Select qui accepte une expression de lambda avec des paramètres de valeur et d'index, est très efficace:

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

L'expression lambda (value, i) => new { i, value } crée un objet anonyme contenant à la fois l'élément (value) et son index (i).

Pour de meilleures performances et pour éviter les allocations de tas inutiles (particulièrement bénéfiques avec les grandes collections), envisagez d'utiliser ValueTuple (disponible à partir de C # 7.0):

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

Encore plus concise, et en tirant parti des capacités de destructeur de C #, nous pouvons accéder directement à la valeur et à l'index:

<code class="language-csharp">foreach (var (value, i) in Model.Select((value, i) => (value, i)))
{
    // Access `value` and `i` directly here.
}</code>
Copier après la connexion

Ces méthodes vous permettent efficacement d'obtenir l'index d'itération actuel tout en utilisant une boucle foreach, offrant un contrôle et une flexibilité plus importants dans 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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal