Latest web development tutorials

C # podziałowe (Indexer)

Indexer (Indexer) umożliwia przedmiot podobny tablicy mogą być indeksowane.Podczas definiowania podziałowe do klasy, działa klasa będzie jaktablicy wirtualnej (Virtual Array) to samo.Można użyć operatora dostępu do tablicy ([]), aby uzyskać dostęp do instancji klasy.

gramatyka

Wymiarową indeksowanie następującą składnię:

Element tego typu [int index] 
{
   // Pobierz akcesor get 
   {
      // Zwraca wartość określonego indeksu}

   // Ustaw akcesor set 
   {
      // Ustaw wartość określonego indeksu}
}

Indexer (Indexer) korzysta

Oświadczenie działa w sposób podobny do właściwości indeksatora (mienia). Podobnie jak nieruchomości (nieruchomości), które można wykorzystać do określeniazestawu indeksu i uzyskaćAkcesor. Jednakże, obiekt jest zwracany lub ustawić konkretny element danych, a powraca indeksu lub ustawia instancję obiektu do określonej wartości. Innymi słowy, jest podzielony na mniejsze części danych przykład, a każda część indeksu się lub ustawić każdą sekcję.

Definicja atrybutu (mienia) obejmuje dostarczenie nazwy właściwości. Jeśli indeks nie jest zdefiniowana z nazwą, ale ztego klucza, co wskazuje na wystąpienie obiektu.Poniższy przykład ilustruje tę koncepcję:

using System;
nazw IndexerApplication
{
   IndexedNames klasy
   {
      private string [] z listą nazw = new string [rozmiar];
      public static int size = 10;
      IndexedNames publiczne ()
      {
         for (int i = 0; i <rozmiar; i ++)
         z listą nazw [i] = "NA";
      }
      public string to [int index]
      {
         dostać
         {
            tmp ciąg;

            if (indeks> = 0 && indeksu <= rozmiar-1)
            {
               tmp = listą nazw [indeks];
            }
            więcej
            {
               tmp = "";
            }

            return (TMP);
         }
         zestaw
         {
            if (indeks> = 0 && indeksu <= rozmiar-1)
            {
               z listą nazw [indeks] = wartość;
            }
         }
      }

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

Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:

Zara
Riz
Nuha
Asif
Davinder
Sunil
Rubic
nanana

Przeciążony podziałowe (Indexer)

Indexer (Indexer) może być przeciążony. Gdy zgłoszenie podziałowe może być również wyposażony w wiele parametrów, a każdy z parametrów mogą być różnych typów. Nie ma potrzeby stosowania wskaźnika musi być liczbą całkowitą. C # pozwala indeksujący Mogą być też inne typy, takie jak typ strun.

Poniższy przykład demonstruje przeciążony indeksowania:

using System;
nazw IndexerApplication
{
   IndexedNames klasy
   {
      private string [] z listą nazw = new string [rozmiar];
      public static int size = 10;
      IndexedNames publiczne ()
      {
         for (int i = 0; i <rozmiar; i ++)
         {
          z listą nazw [i] = "NA";
         }
      }
      public string to [int index]
      {
         dostać
         {
            tmp ciąg;

            if (indeks> = 0 && indeksu <= rozmiar-1)
            {
               tmp = listą nazw [indeks];
            }
            więcej
            {
               tmp = "";
            }

            return (TMP);
         }
         zestaw
         {
            if (indeks> = 0 && indeksu <= rozmiar-1)
            {
               z listą nazw [indeks] = wartość;
            }
         }
      }
      public int to [string name]
      {
         dostać
         {
            int index = 0;
            while (index <rozmiar)
            {
               if (z listą nazw [indeks] == nazwa)
               {
                powrót indeksu;
               }
               Indeks ++;
            }
            powrót indeksu;
         }

      }

      static void Main (string [] args)
      {
         IndexedNames imiona = new IndexedNames ();
         Nazwy [0] = "Zara";
         Nazwy [1] = "Riz";
         nazw [2] = "Nuha";
         Nazwy [3] = "Asif";
         Nazwy [4] = "Davinder";
         Nazwy [5] = "Sunil";
         Nazwy [6] = "Rubic";
         // Użyj pierwszy parametr z int indekser for (int i = 0; i <IndexedNames.size; i ++)
         {
            Console.WriteLine (nazwy [i]);
         }
         // Użyj drugi podziałowe z Console.WriteLine parametru ciąg (nazwy [ "Nuha"]);
         Console.ReadKey ();
      }
   }
}

Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:

Zara
Riz
Nuha
Asif
Davinder
Sunil
Rubic
nanana
2