Как дать свойства индексатора по умолчанию для класса в C#

Свойство indexer является свойством, которое другой код может использовать внутри квадратных скобок для доступа к некоторому значению, предоставляемому классом, так же, как вы можете использовать индекс массива. В отличие от массива, индексирующее устройство класса не обязательно должно быть целым числом. Кроме того, вы можете перегрузить индексатор, чтобы предоставить более одного индексатора для класса.

В следующем коде показан класс GradeCollection. Это действительно просто обертка для словаря , который содержит имена студентов и их оценки.

Класс содержит объект Dictionary для хранения имен и оценок учащихся.

Два метода с именем this, который использует квадратные скобки, являются индексаторами. Первый индексщик принимает параметр string (имя студента) и возвращает класс ученика. Он предоставляет методы get и set, которые просто делегируют свою работу объекту Dictionary.

Основная программа использует следующую строку кода для использования этого индексатора для отображения оценки учащегося.

В коде Grades [txtStudent.Text] используется индексатор, чтобы получить оценку для ученика, имя которого находится в txtStudent TextBox. Код преобразует возвращаемый класс в строку и отображает его в txtGrade TextBox.

Следующий код показывает, как программа использует этот индекс для установки класса ученика.

Левая часть выражения представляет класс ученика. Этот оператор устанавливает класс, равный значению в txtGrade TextBox.

Второй индексщик класса принимает целочисленный балл в качестве параметра и возвращает коллекцию студентов с оценками, которые соответствуют этой оценке.

Код индексатора проходит через ключи словаря Grades. Если соответствующий класс учащегося соответствует целевому значению, код добавляет имя ученика в список результатов. После того, как он зациклился на всех именах учеников, индексщик возвращает список.

Источник: http://csharphelper.com/blog/2017/03/give-a-class-default-indexer-properties-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)

Add a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *