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