Основной вопрос класса C # относительно ключевого слова "this" - PullRequest
2 голосов
/ 15 сентября 2011

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

public CustomClassName this [ string varName]

Пожалуйста, извините за новизну этого вопроса, но квадратные скобки отбросили меня. Это метод или конструктор?

Как в этом случае работает переменная "this"?

Ответы [ 5 ]

6 голосов
/ 15 сентября 2011

Это называется индексатором. Страница MSDN.

0 голосов
/ 15 сентября 2011

Ни один, это индексатор .Это позволяет вам создавать CustomClassName [obj] и извлекать значение из объекта.

0 голосов
/ 15 сентября 2011

это просто перегрузка оператора квадратной скобки в C #.

см. Здесь:

Как перегрузить оператор квадратной скобки в C #?

0 голосов
/ 15 сентября 2011

Определяет оператор индекса для вашего типа. Взять, к примеру, класс List<T>. Разработчики библиотеки хотели, чтобы вы могли написать код, подобный следующему:

List<int> list = new List<int> { 1, 2, 3, 4, 5 };
int x = list[2]; // x == 3

Синтаксис, который выполняет то, что вы опубликовали выше. Итак, для ваших собственных типов, вы можете ...

class NameCollection : /* whatever */
{
    private List<string> _names = new List<string> { "Ed", "Sally", "John" };

    public string this[int index]
    {
        get { return _names[index]; }
    }
}
0 голосов
/ 15 сентября 2011

Это индексатор, поэтому вы можете получить доступ к классу, похожему на массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...