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

C# - Indexeurs

Un indexeur permet d'indexer un objet tel qu'un tableau. Lorsque vous définissez un indexeur pour une classe, cette classe se comporte comme un tableau virtuel . Vous pouvez ensuite accéder à l'instance de cette classe à l'aide de l'opérateur d'accès au tableau ([ ]).

Syntaxe

Un indexeur unidimensionnel a la syntaxe suivante −

element-type this[int index] {

   // The get accessor.
   get {
      // return the value specified by index
   }
   
   // The set accessor.
   set {
      // set the value specified by index
   }
}

Utilisation des indexeurs

La déclaration de comportement d'un indexeur est dans une certaine mesure similaire à une propriété. similaire aux propriétés, vous utilisez get et définir accesseurs pour définir un indexeur. Cependant, les propriétés renvoient ou définissent un membre de données spécifique, tandis que les indexeurs renvoient ou définissent une valeur particulière à partir de l'instance d'objet. En d'autres termes, il divise les données d'instance en parties plus petites et indexe chaque partie, obtient ou définit chaque partie.

Définir une propriété implique de fournir un nom de propriété. Les indexeurs ne sont pas définis avec des noms, mais avec le this mot-clé, qui fait référence à l'instance de l'objet. L'exemple suivant illustre le concept −

Démo en direct
using System;

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

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant −

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

Indexeurs surchargés

Les indexeurs peuvent être surchargés. Les indexeurs peuvent également être déclarés avec plusieurs paramètres et chaque paramètre peut être d'un type différent. Il n'est pas nécessaire que les index soient des entiers. C# permet aux index d'être d'autres types, par exemple, une chaîne.

L'exemple suivant montre des indexeurs surchargés −

Démo en direct
using System;

namespace IndexerApplication {
   class IndexedNames {
      private string[] namelist = new string[size];
      static public int size = 10;
      
      public IndexedNames() {
         for (int i = 0; i < size; i++) {
            namelist[i] = "N. A.";
         }
      }
      public string this[int index] {
         get {
            string tmp;
            
            if( index >= 0 && index <= size-1 ) {
               tmp = namelist[index];
            } else {
               tmp = "";
            }
            
            return ( tmp );
         }
         set {
            if( index >= 0 && index <= size-1 ) {
               namelist[index] = value;
            }
         }
      }
      
      public int this[string name] {
         get {
            int index = 0;
            
            while(index < size) {
               if (namelist[index] == name) {
                return index;
               }
               index++;
            }
            return index;
         }
      }

      static void Main(string[] args) {
         IndexedNames names = new IndexedNames();
         names[0] = "Zara";
         names[1] = "Riz";
         names[2] = "Nuha";
         names[3] = "Asif";
         names[4] = "Davinder";
         names[5] = "Sunil";
         names[6] = "Rubic";
         
         //using the first indexer with int parameter
         for (int i = 0; i < IndexedNames.size; i++) {
            Console.WriteLine(names[i]);
         }
         
         //using the second indexer with the string parameter
         Console.WriteLine(names["Nuha"]);
         Console.ReadKey();
      }
   }
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant −

Zara
Riz
Nuha
Asif
Davinder
Sunil
Rubic
N. A.
N. A.
N. A.
2

Langue C

  1. C# Hello World - Votre premier programme C#
  2. Mots-clés et identifiants C#
  3. Variables C# et types de données (primitifs)
  4. Opérateurs C#
  5. Opérateurs de bits et de décalage de bits C#
  6. Entrée et sortie de base C#
  7. Expressions, instructions et blocs C# (avec exemples)
  8. Commentaires C#
  9. Instruction de commutateur C #