Индексатор
Индексатор объявляют как свойство с именем
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