Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1095 of 1492 menu
◀ ▶

Индексатор

Индексатор объявляют как свойство с именем this и параметром в квадратных скобках. Синтаксис обращения похож на массив: obj[i]. Можно задать get, set или оба. Индекс может быть не только int, но и строкой или другим типом.

Синтаксис

public тип this[типИндекса index] { get { } set { } }

Пример

Давайте прочитаем элемент по числовому индексу:

using System; class Buffer { private string[] cells = { "a", "b", "c", "d", "e" }; public string this[int index] { get { return cells[index]; } } } class Program { static void Main() { var buffer = new Buffer(); Console.WriteLine(buffer[2]); } }

Результат выполнения кода:

"c"

Пример

Давайте запишем значение через индексатор с set:

using System; class Buffer { private string[] cells = new string[5]; public string this[int index] { get { return cells[index]; } set { cells[index] = value; } } } class Program { static void Main() { var buffer = new Buffer(); buffer[0] = "abcde"; Console.WriteLine(buffer[0]); } }

Результат выполнения кода:

"abcde"

Пример

Давайте сделаем индексатор со строковым ключом:

using System; using System.Collections.Generic; class Map { private Dictionary<string, int> data = new(); public int this[string key] { get { return data[key]; } set { data[key] = value; } } } class Program { static void Main() { var map = new Map(); map["id"] = 5; Console.WriteLine(map["id"]); } }

Результат выполнения кода:

5

Смотрите также

  • свойство get и set,
    которое похоже на индексатор без скобок
  • тип array,
    к которому обращаются так же через []
  • класс List,
    который тоже поддерживает [index]
  • оператор if,
    которым проверяют индекс перед доступом
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить