Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

C# - Indexeerprogramma's

Een indexeerder staat toe dat een object wordt geïndexeerd, zoals een array. Wanneer u een indexeerder voor een klasse definieert, gedraagt ​​deze klasse zich vergelijkbaar met een virtuele array . U kunt dan toegang krijgen tot de instantie van deze klasse met behulp van de array-toegangsoperator ([ ]).

Syntaxis

Een eendimensionale indexer heeft de volgende syntaxis −

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

Gebruik van indexeerders

Gedragsverklaring van een indexeerder is tot op zekere hoogte vergelijkbaar met een eigenschap. vergelijkbaar met de eigenschappen, gebruik je get en stel . in accessors voor het definiëren van een indexer. Eigenschappen retourneren of stellen echter een specifiek gegevenslid in, terwijl indexeerders een bepaalde waarde van de objectinstantie retourneren of instellen. Met andere woorden, het verdeelt de instantiegegevens in kleinere delen en indexeert elk deel, krijgt of stelt elk deel in.

Het definiëren van een eigenschap omvat het verstrekken van een eigenschapsnaam. Indexeerders worden niet gedefinieerd met namen, maar met de dit trefwoord, dat verwijst naar de objectinstantie. Het volgende voorbeeld demonstreert het concept −

Live demo
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();
      }
   }
}

Wanneer de bovenstaande code wordt gecompileerd en uitgevoerd, levert dit het volgende resultaat op −

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

Overbelaste indexeerders

Indexeerders kunnen overbelast raken. Indexeer functies kunnen ook worden gedeclareerd met meerdere para meters en elke para meter kan een ander type zijn. Het is niet nodig dat de indexen gehele getallen zijn. C# staat toe dat indexen van andere typen zijn, bijvoorbeeld een tekenreeks.

Het volgende voorbeeld toont overbelaste indexeerders −

Live demo
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();
      }
   }
}

Wanneer de bovenstaande code wordt gecompileerd en uitgevoerd, levert dit het volgende resultaat op −

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

C Taal

  1. C# Hello World - Uw eerste C#-programma
  2. C#-zoekwoorden en -ID's
  3. C#-variabelen en (primitieve) gegevenstypen
  4. C#-operators
  5. C# Bitsgewijze en Bit Shift-operators
  6. C# Basisinvoer en -uitvoer
  7. C#-expressies, statements en blokken (met voorbeelden)
  8. C# Opmerkingen
  9. C# switch-instructie
  10. C# ternair (? :) Operator
  11. C# break-instructie