C # индексатор (индексатор)
Indexer (индексатор) позволяет объекту как массив может быть проиндексирован.При определении индексатор для класса, класс действует будет каквиртуальный массив (виртуальный массив) то же самое.Вы можете использовать оператор доступа к массиву ([]), чтобы получить доступ к экземпляру класса.
грамматика
Размерный индексирование следующий синтаксис:
элемент типа этого [INT индекс] { // Получить аксессор Get { // Возвращает значение указанного индекса} // Установить аксессор комплект { // Установить значение указанного индекса} }
Indexer (Индексатор) использует
Заявление действует аналогично свойству индексатора (свойство). Как собственности (имущества), которые можно использовать для определениянабора индексов и получитьаксессор. Однако свойство возвращается или установить конкретный элемент данных, и возвращает индекс или задает экземпляр объекта на определенное значение. Другими словами, это данные экземпляра разделены на более мелкие части, и каждая часть индекса, получить или установить каждую секцию.
Определение атрибута (имущества) включает предоставление имен свойств. Когда индекс не определен с именем, но сэтим ключом, который указывает на экземпляр объекта.Следующий пример иллюстрирует эту концепцию:
с помощью системы; Пространство имен IndexerApplication { класса IndexedNames { частная строка [] = списке имен новая строка [размер]; статический размер общественного INT = 10; общественные IndexedNames () { для (INT I = 0; я <размер; я ++) списке имен [я] = "NA"; } публичная строка этого [INT индекс] { получить { Строка TMP; если (индекс> = 0 && индекс <= размер-1) { TMP = списке имен [индекс]; } еще { TMP = ""; } возврат (TMP); } комплект { если (индекс> = 0 && индекс <= размер-1) { списке имен [индекс] = значение; } } } статической силы основных (String [] агдз) { IndexedNames имена = новый IndexedNames (); имена [0] = "Zara"; имена [1] = "Риз"; имена [2] = "Нуха"; имена [3] = "Асиф"; имена [4] = "Давиндер"; имена [5] = "Сунил"; имена [6] = "Rubic"; для (INT I = 0; я <IndexedNames.size; я ++) { Console.WriteLine (имена [я]); } Console.ReadKey (); } } }
Когда приведенный выше код компилируется и выполняется, он дает следующие результаты:
Zara Риз Нуха Асиф Давиндер Сунил Rubic Nanana
Перегруженные индексатор (индексатор)
Indexer (индексатор) может быть перегружен. Когда декларация индексатор может быть также снабжен множеством параметров, и каждый параметр может быть различных типов. Там нет необходимости для индекса должно быть целым числом. C # позволяет индексаторы могут быть и другие типы, такие как тип строки.
Следующий пример демонстрирует перегруженный индексатор:
с помощью системы; Пространство имен IndexerApplication { класса IndexedNames { частная строка [] = списке имен новая строка [размер]; статический размер общественного INT = 10; общественные IndexedNames () { для (INT I = 0; я <размер; я ++) { списке имен [я] = "NA"; } } публичная строка этого [INT индекс] { получить { Строка TMP; если (индекс> = 0 && индекс <= размер-1) { TMP = списке имен [индекс]; } еще { TMP = ""; } возврат (TMP); } комплект { если (индекс> = 0 && индекс <= размер-1) { списке имен [индекс] = значение; } } } общественного INT это [имя строки] { получить { INT индекс = 0; в то время как (индекс <размер) { если (списке имен [индекс] == имя) { возвращать индекс; } Индекс ++; } возвращать индекс; } } статической силы основных (String [] агдз) { IndexedNames имена = новый IndexedNames (); имена [0] = "Zara"; имена [1] = "Риз"; имена [2] = "Нуха"; имена [3] = "Асиф"; имена [4] = "Давиндер"; имена [5] = "Сунил"; имена [6] = "Rubic"; // Используйте первый параметр с Int индексатор для (INT I = 0; я <IndexedNames.size; я ++) { Console.WriteLine (имена [я]); } // Используйте второй индексатор с параметром строка Console.WriteLine (имена [ "Нуха"]); Console.ReadKey (); } } }
Когда приведенный выше код компилируется и выполняется, он дает следующие результаты:
Zara Риз Нуха Асиф Давиндер Сунил Rubic Nanana 2