Latest web development tutorials

C # indicizzatore (indicizzatore)

Indexer (indicizzatore) permette un oggetto come un array possono essere indicizzati.Quando si definisce un indicizzatore per la classe, atti di classe sarà come unamatrice virtuale (Virtual Array) lo stesso.È possibile utilizzare l'operatore di accesso agli array ([]) per accedere alla istanza della classe.

grammatica

Un indicizzazione dimensionale la seguente sintassi:

elemento-tipo questo [int index] 
{
   // Ottenere accesso get 
   {
      // Restituisce il valore dell'indice specificato}

   // Set di accesso set 
   {
      // Imposta il valore dell'indice specificato}
}

Indexer (Indexer) usi

Statement agisce in modo simile alla proprietà indicizzatore (proprietà). Come la proprietà (proprietà), che è possibile utilizzare per definire ilset di indice e otteneredi accesso. Tuttavia, la proprietà viene restituito o impostare un membro di dati specifici, e l'indice restituisce o imposta l'istanza di oggetto a un valore specifico. In altre parole, è la dati di istanza è diviso in parti più piccole, e ogni parte dell'indice, ottenere o impostare ciascuna sezione.

La definizione di un attributo (proprietà) comprende fornendo nomi di proprietà. Quando l'indice non è definito con il nome, ma conquesta chiave, che punta al istanza di oggetto.L'esempio seguente illustra questo concetto:

using System;
namespace IndexerApplication
{
   IndexedNames classe
   {
      private string [] namelist = new string [size];
      dimensione pubblica static int = 10;
      IndexedNames pubblici ()
      {
         for (int i = 0; i <dimensioni; i ++)
         namelist [i] = "NA";
      }
      public string questo [int index]
      {
         ottenere
         {
            stringa tmp;

            se (indice> = 0 && index <= size-1)
            {
               tmp = namelist [index];
            }
            altro
            {
               tmp = "";
            }

            ritorno (tmp);
         }
         set
         {
            se (indice> = 0 && index <= size-1)
            {
               namelist [indice] = valore;
            }
         }
      }

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

Quando il codice di cui sopra è compilato ed eseguito, produce i seguenti risultati:

Zara
Riz
Nuha
Asif
Davinder
Sunil
rubic
nanana

indicizzatore overload (indicizzatore)

Indexer (indicizzatore) potrebbe essere sovraccarico. Quando dichiarazione indexer può anche essere provvista di una pluralità di parametri, e ogni parametro può essere di diversi tipi. Non è necessario per l'indice deve essere un numero intero. C # consente indicizzatori possono essere altri tipi, come il tipo di stringa.

L'esempio seguente mostra indicizzatore sovraccarico:

using System;
namespace IndexerApplication
{
   IndexedNames classe
   {
      private string [] namelist = new string [size];
      dimensione pubblica static int = 10;
      IndexedNames pubblici ()
      {
         for (int i = 0; i <dimensioni; i ++)
         {
          namelist [i] = "NA";
         }
      }
      public string questo [int index]
      {
         ottenere
         {
            stringa tmp;

            se (indice> = 0 && index <= size-1)
            {
               tmp = namelist [index];
            }
            altro
            {
               tmp = "";
            }

            ritorno (tmp);
         }
         set
         {
            se (indice> = 0 && index <= size-1)
            {
               namelist [indice] = valore;
            }
         }
      }
      public int questo [string name]
      {
         ottenere
         {
            int index = 0;
            mentre (index <size)
            {
               if (elenco nomi [index] == nome)
               {
                Return Index;
               }
               Indice ++;
            }
            Return Index;
         }

      }

      static void Main (string [] args)
      {
         I nomi IndexedNames = new IndexedNames ();
         I nomi [0] = "Zara";
         I nomi [1] = "Riz";
         I nomi [2] = "Nuha";
         I nomi [3] = "Asif";
         I nomi [4] = "Davinder";
         I nomi [5] = "Sunil";
         I nomi [6] = "Rubic";
         // Utilizzare il primo parametro con int indicizzatore for (int i = 0; i <IndexedNames.size; i ++)
         {
            Console.WriteLine (nomi [i]);
         }
         // Utilizzare il secondo indicizzatore con un parametro di stringa Console.WriteLine (nomi [ "Nuha"]);
         Console.ReadKey ();
      }
   }
}

Quando il codice di cui sopra è compilato ed eseguito, produce i seguenti risultati:

Zara
Riz
Nuha
Asif
Davinder
Sunil
rubic
nanana
2