Я только что видел это в проекте С#:
public char this[int index]
Я считаю себя новичком в C#; кто-нибудь может помочь, что это значит?
Я только что видел это в проекте С#:
public char this[int index]
Я считаю себя новичком в C#; кто-нибудь может помочь, что это значит?
Это индексатор.
Индексаторы позволяют индексировать экземпляры класса или структуры так же, как массивы. Индексаторы напоминают свойства, за исключением того, что их методы доступа принимают параметры. Индексатор предоставляет синтаксис, подобный массиву. Это позволяет получить доступ к типу так же, как к массиву. Такие свойства, как индексаторы, часто обращаются к резервному хранилищу. Мы часто принимаем параметр типа int и обращаемся к резервному хранилищу типа массива.
Прочтите его на странице http://www.dotnetperls.com/indexer.
string s = "hello";
Console.WriteLine (s[0]); // 'h'
Console.WriteLine (s[3]); // 'l'
Реализация индексатора
Чтобы написать индексатор, определите свойство с именем this, указав аргументы в квадратных скобках. Например:
class Sentence
{
string[] words = "The quick brown fox".Split();
public string this [int wordNum] // indexer
{
get { return words [wordNum]; }
set { words [wordNum] = value; }
}
}
Вот как мы могли бы использовать этот индексатор:
Sentence s = new Sentence();
Console.WriteLine (s[3]); // fox
s[3] = "kangaroo";
Console.WriteLine (s[3]); // kangaroo
Тип может объявлять несколько индексаторов, каждый с параметрами разных типов. Индексатор также может принимать более одного параметра:
public string this [int arg1, string arg2]
{
get { ... } set { ... }
}
Индексаторы внутренне компилируются в методы с именами get_Item
и set_Item
следующим образом:
public string get_Item (int wordNum) {...}
public void set_Item (int wordNum, string value) {...}
Компилятор выбирает имя Item
по умолчанию — вы можете изменить его, украсив свой индексатор следующим атрибутом:
[System.Runtime.CompilerServices.IndexerName ("Blah")]
это называется indexer
.
Это называется индексатор. Подробнее о них читайте в MSDN.