Путь разработчика    

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


Классы, такие как Dictionary и List предоставляют свойство индексатора по умолчанию, которое позволяет вам получать доступ к значениям, используя синтаксис, аналогичный тому, который вы используете для доступа к значениям в массиве. Например, следующие наборы кода, а затем получает фамилию из словаря .

Python

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

В этом примере используется класс DictionaryWithDefault. Этот класс в основном является оберткой для Dictionary, но он возвращает значение по умолчанию, если вы пытаетесь получить доступ к ключу, который не находится в Dictionary. Следующий код показывает, как работает класс.

Python

Это общий класс с параметрами типа TKey и TValue. Большая часть кода относительно проста (если вы понимаете общие классы).

Интересной частью является свойство индексатора. Метод get возвращает соответствующее значение, если индекс находится в Dictionary или значение по умолчанию в противном случае. Метод set просто сохраняет пару ключ / значение в Dictionary.

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

Python

Источник: http://csharphelper.com/blog/2015/05/make-a-default-indexer-property-for-a-class-in-c/



Отзывы (через Facebook):

Оставить отзыв с помощью аккаунта FaceBook:

Формы размера, чтобы соответствовать их содержимому в C#

В этом примере показано, как размер форм подходит для их содержимого. Выяснить, как форматы размера могут быть сложными, особенно если форма содержит MenuS...

22 10 2019 3:17:36

Как открыть файл PDF в C#

Во время разработки я добавил в форму элемент WebBrowser. Когда программа запускается, он использует следующий код для открытия PDF-файла в элементе управл...

21 10 2019 11:18:32

Добавление метода расширения в класс Graphics в C#

По какой-то странной причине метод DrawRectangle класса Graphics не может принимать параметр RectangleF в качестве параметра. Он может принимать значения R...

20 10 2019 2:59:50

Разница между capacity() и size() вектора в Java

Разница между capacity() и size() в Java.util.Vector заключается в том, что size() - это количество элементов, которые в настоящее время удерживаются, а ca...

19 10 2019 18:47:25

Эффект радуги изображения в C#

Этот пример расширяет сообщение Использовать объект ImageAttributes для применения общих цветовых тонов к изображению на C# для радуги изображения. Он отби...

18 10 2019 7:51:36


Parse error: syntax error, unexpected ',' in /home/users/9/9161484547/domains/flash-mx.ru/lessons/926.php on line 69