Теперь вы знаете, как объявлять массивы и создавать их экземпляры, как работать с массивами разных типов и циклически обрабатывать элементы массивов. Вы также узнали, как для массивов использовать наиболее популярные свойства и методы, определенные в классе
System.Array.
Теперь перейдем к рассмотрению индексаторов — особой возможности С#, позволяющей программно обращаться с объектами так, как если бы они были массивами.
Но зачем это нужно? Как и в случае большинства функций языка программирования, польза от индексаторов в том, что писать приложения становится более интуитивно понятно. В разделе "Свойства как "умные поля"" вы узнали, как свойства в С# дают вам возможность ссылаться на поля класса с использованием стандартного синтаксиса
класс.поле.
Такие поля в конечном счете приводятся к методам-получателям и установщикам. Это абстрагирование освобождает программиста, пишущего клиент класса, от необходимости определения наличия у поля методов-получателей и установщиков и от необходимости знать их точный формат. Аналогично индексаторы позволяют клиенту класса индексировать объект, как если бы объект был массивом.
Рассмотрим пример. У вас есть класс "окно со списком", куда пользователь класса может вставлять строки. Если вы хорошо знакомы с
Win32
SDK, то знаете, что для того, чтобы вставить строку в окно со списком, нужно послать ему сообщение
Приняв это во внимание и стремясь облегчить создание лучшего и наиболее интуитивно понятного языка, команда разработчиков С# задалась вопросом: "А почему бы не предоставить возможность обработки объекта, который по своей сути является массивом, как массива?" Разве окно со списком — это не просто массив строк с дополнительной функциональностью вывода и сортировки? Вот из этой идеи и родилась концепция индексаторов.