Вы когда-нибудь задумывались над тем, как List<T>
myList[i]
работает в C# как массив?
Ответ на ваш вопрос. Синтаксис, который вы опубликовали, представляет собой синтаксический сахар, который компилятор преобразует в свойства, называемые get_Item(int index)
и set_Item(int index, decimal value)
. Он используется в List<T>
, например, для доступа к внутреннему массиву, используемому в классе, и возвращает элемент по указанному индексу (установить или получить). Эта функция называется Indexer.
Чтобы проверить себя, попробуйте создать метод с такой же подписью:
public decimal get_Item(int i)
{
return 0;
}
Вы получите ошибку компиляции:
Ошибка CS0082: Тип «MyClass» уже оставляет член называемый 'get_Item' с теми же параметрами
Если ваш класс называется MathTest, он позволяет вам получить доступ к массиву внутренних коэффициентов MathTest [i] вместо MathTest. Коэффициенты [i]. См. Http://stackoverflow.com/questions/1307354/c-sharp-indexer-usage и http://stackoverflow.com/questions/2185071/real-world-use-cases-for-c-sharp-indexers – ManoDestra
Почему downvotes .. – PreqlSusSpermaOhranitel
Идея. Я поддержал вас. Вопрос кажется мне достаточно ясным. Возможно, это довольно плохо изучено, так как это основной вопрос синтаксиса для lanuage, но все еще действительный IMO. – ManoDestra