Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Langue C

Indexeurs C# : faire agir les objets comme des tableaux

Un indexeur permet d'indexer un objet comme un tableau. Quand vous définissez un indexeur pour une classe, elle se comporte comme un tableau virtuel. Vous accédez alors à l'instance avec l'opérateur d'accès tableau [ ].

Syntaxe

Indexeur unidimensionnel :


type_élément this[int index]
{
    get { /* retourne valeur à l'index */ }
    set { /* définit valeur à l'index */ }
}

Utilisation des indexeurs

Similaire aux propriétés, mais :

Pas de nom, utilise le mot-clé this (référence à l'instance).

Exemple : liste de noms indexée


using System;

namespace ApplicationIndexeur
{
    class NomsIndexés
    {
        private string[] listeNoms = new string[taille];
        static public int taille = 10;
        
        public NomsIndexés()
        {
            for (int i = 0; i < taille; i++)
                listeNoms[i] = "N.D.";
        }
        
        public string this[int index]
        {
            get
            {
                string tmp;
                if (index >= 0 && index <= taille - 1)
                    tmp = listeNoms[index];
                else
                    tmp = "";
                return tmp;
            }
            set
            {
                if (index >= 0 && index <= taille - 1)
                    listeNoms[index] = value;
            }
        }
        
        static void Main(string[] args)
        {
            NomsIndexés noms = new NomsIndexés();
            noms[0] = "Zara";
            noms[1] = "Riz";
            noms[2] = "Nuha";
            noms[3] = "Asif";
            noms[4] = "Davinder";
            noms[5] = "Sunil";
            noms[6] = "Rubic";
            
            for (int i = 0; i < NomsIndexés.taille; i++)
                Console.WriteLine(noms[i]);
            
            Console.ReadKey();
        }
    }
}

Résultat :


Zara
Riz
Nuha
Asif
Davinder
Sunil
Rubic
N.D.
N.D.
N.D.

Indexeurs surchargés

Les indexeurs peuvent être surchargés avec plusieurs paramètres de types différents. Pas nécessairement des entiers (ex: string).

Exemple : indexeur par nom


// Dans la même classe...
public int this[string nom]
{
    get
    {
        int index = 0;
        while (index < taille)
        {
            if (listeNoms[index] == nom)
                return index;
            index++;
        }
        return index; // non trouvé = taille
    }
}

// Utilisation
Console.WriteLine(noms["Nuha"]); // Affiche 2

Résultat ajouté : 2

Cas d'usage courants

Bonnes pratiques

Langue C

  1. C# Hello World — Construire votre première application C#
  2. Comprendre les mots-clés et identificateurs C# : règles, listes et bonnes pratiques
  3. Maîtriser les variables C# et types de données primitifs : guide complet
  4. Opérateurs C# — Guide complet des opérateurs en C#
  5. Maîtriser les opérateurs bit à bit et de décalage en C# : Guide complet
  6. Fondamentaux C# : Entrées et sorties essentielles
  7. Expressions, instructions et blocs C# : Guide complet avec exemples pratiques
  8. Maîtriser les commentaires C# : Types, bonnes pratiques et documentation XML
  9. Maîtriser l'instruction Switch C# : Syntaxe, exemples et bonnes pratiques