DataGridView, например, позволяет вам сделать это:
DataGridView dgv = ...;
DataGridViewCell cell = dgv[1,5];
но я не могу найти документацию по оператору index / квадратные скобки. Как они это называют? Где это реализовано? Это может бросить? Как я могу сделать то же самое в моих собственных классах?
ETA: Спасибо за все быстрые ответы. Вкратце: соответствующая документация находится в собственности "Item"; способ перегрузки заключается в объявлении свойства как public object this[int x, int y]{ get{...}; set{...} }
; индексатор для DataGridView не выбрасывает, по крайней мере, согласно документации. Не упоминается, что произойдет, если вы введете неверные координаты.
ETA Опять же: ОК, хотя в документации об этом ничего не говорится (непослушная Microsoft!), Оказывается, что индексатор для DataGridView фактически выдает исключение ArgumentOutOfRangeException, если вы передадите ему недопустимые координаты. Честное предупреждение.
Это будет свойство элемента: http://msdn.microsoft.com/en-us/library/0ebtbkkc.aspx
Может быть, что-то вроде этого будет работать:
источник
Источник информации
Для кронштейна:
НО
Оператор индексации массива не может быть перегружен ; однако типы могут определять индексаторы, свойства, которые принимают один или несколько параметров. Параметры индексатора заключены в квадратные скобки, как и индексы массива, но параметры индексатора могут быть объявлены любого типа (в отличие от индексов массива, которые должны быть целыми).
Из MSDN
источник
Если вы используете C # 6 или новее, вы можете использовать синтаксис тела выражения для индексатора только для получения:
public object this[int i] => this.InnerList[i];
источник
источник
new
ключевому слову.Для CLI C ++ (скомпилировано с / clr) смотрите эту ссылку MSDN .
Вкратце, свойству может быть присвоено имя «default»:
источник
Вот пример, возвращающий значение из внутреннего объекта List. Должен дать вам идею.
источник
Если вы имеете в виду индексатор массива, вы перегружаете его, просто записывая свойство индексатора. И вы можете перегружать (записывать столько, сколько хотите) свойств индексатора, если каждый из них имеет свою сигнатуру параметра
источник