Latest web development tutorials

C # indexeur (Indexer)

Indexer (Indexer) permet à un objet comme un tableau peut être indexé.Lorsque vous définissez un indexeur pour la classe, les actes de classe seront comme unréseau virtuel (réseau virtuel) de la même.Vous pouvez utiliser l'opérateur d'accès au tableau ([]) pour accéder à l'instance de la classe.

grammaire

Une indexation dimensionnelle de la syntaxe suivante:

élément de type cette [int index] 
{
   // Get accesseur get 
   {
      // Retourne la valeur de l'index spécifié}

   // Accesseur Set mis 
   {
      // Définir la valeur de l'index spécifié}
}

Indexer utilisations (Indexer)

Déclaration agit d'une manière similaire à la propriété d'indexeur (propriété). Comme la propriété (propriété), que vous pouvez utiliser pour définirl'ensemble des indices et obteniraccesseur. Toutefois, la propriété est retourné ou définir un membre spécifique de données, et les rendements de l'indice ou définit l'instance d'objet à une valeur spécifique. En d'autres termes, ce sont les données d'instance est divisée en parties plus petites, et chaque partie de l'indice, obtenir ou définir chaque section.

La définition d'un attribut (propriété) comprend la fourniture des noms de propriété. Lorsque l'indice est pas défini avec le nom, mais aveccette clé, qui pointe vers l'instance d'objet.L'exemple suivant illustre ce concept:

using System;
namespace IndexerApplication
{
   IndexedNames de classe
   {
      private string [] namelist = new string [size];
      statique taille du public int = 10;
      IndexedNames publiques ()
      {
         for (int i = 0; i <taille; i ++)
         namelist [i] = "NA";
      }
      public string cette [int index]
      {
         obtenir
         {
            tmp de chaîne;

            if (index> = 0 && index <= taille-1)
            {
               tmp = namelist [index];
            }
            autre
            {
               tmp = "";
            }

            retour (tmp);
         }
         ensemble
         {
            if (index> = 0 && index <= taille-1)
            {
               namelist [index] = valeur;
            }
         }
      }

      static void Main (string [] args)
      {
         noms IndexedNames = new IndexedNames ();
         noms [0] = "Zara";
         noms [1] = "Riz";
         Les noms [2] = "Nuha";
         Les noms [3] = "Asif";
         noms [4] = "Davinder";
         noms [5] = "Sunil";
         noms [6] = "Rubic";
         for (int i = 0; i <IndexedNames.size; i ++)
         {
            Console.WriteLine (noms [i]);
         }
         Console.ReadKey ();
      }
   }
}

Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants:

Zara
Riz
Nuha
Asif
Davinder
Sunil
Rubic
NaNaNa

indexeur Surchargé (Indexer)

Indexer (Indexer) peut être surchargé. Lorsque la déclaration de l'indexeur peut également être pourvu d'une pluralité de paramètres, et chaque paramètre peut être de différents types. Il n'y a pas besoin de l'index doit être un entier. C # permet indexeurs peuvent être d'autres types, tels que le type de chaîne.

L'exemple suivant montre indexeur surchargé:

using System;
namespace IndexerApplication
{
   IndexedNames de classe
   {
      private string [] namelist = new string [size];
      statique taille du public int = 10;
      IndexedNames publiques ()
      {
         for (int i = 0; i <taille; i ++)
         {
          namelist [i] = "NA";
         }
      }
      public string cette [int index]
      {
         obtenir
         {
            tmp de chaîne;

            if (index> = 0 && index <= taille-1)
            {
               tmp = namelist [index];
            }
            autre
            {
               tmp = "";
            }

            retour (tmp);
         }
         ensemble
         {
            if (index> = 0 && index <= taille-1)
            {
               namelist [index] = valeur;
            }
         }
      }
      public int ce [nom de chaîne]
      {
         obtenir
         {
            int index = 0;
            tandis que (indice <size)
            {
               if (namelist [index] == nom)
               {
                retour index;
               }
               index ++;
            }
            retour index;
         }

      }

      static void Main (string [] args)
      {
         noms IndexedNames = new IndexedNames ();
         noms [0] = "Zara";
         noms [1] = "Riz";
         Les noms [2] = "Nuha";
         Les noms [3] = "Asif";
         noms [4] = "Davinder";
         noms [5] = "Sunil";
         noms [6] = "Rubic";
         // Utilisez le premier paramètre avec int indexeur for (int i = 0; i <IndexedNames.size; i ++)
         {
            Console.WriteLine (noms [i]);
         }
         // Utilisez la deuxième indexeur avec un paramètre de chaîne Console.WriteLine (noms [ "Nuha"]);
         Console.ReadKey ();
      }
   }
}

Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants:

Zara
Riz
Nuha
Asif
Davinder
Sunil
Rubic
NaNaNa
2