Параметр по ссылке this

 

Специальное поле указатель (this), который формируется автоматически при создании объекта и содержит адрес созданного объекта.

Фактически связь полей объекта с методами класса происходит через параметр this. Каждый метод класса может непосредственно обращаться к параметру this для работы с элементами текущего объекта. Поскольку значение this всегда соответствует текущему объекту (объекту, с которым в текущий момент работает программа), то методы класса будут работать с элементами текущего объекта.

Использование параметра thisприменяется во многих конструкторах для инициализации полей объектов. Многие авторы при описании конструкторов классов в качестве имен формальных параметров используют имена полей классов и для того чтобы различать поля классов и имена формальных параметров перед именами полей классов указывается параметр this.Например, наш конструктор treyg в этом случае необходимо было бы записать следующим образом:

public treyg(int a, int b, int c)

{

this.a = a; this.b = b; this.c = c;

}

Избежать конфликта имен можно более простым способом – просто выбрав другие имена для формальных параметров (что мы и сделали в программе).

Параметр thisнельзя использовать при обращении к статическим элементам класса, так как они принадлежат не конкретному объекту, а классу в целом.

В языке С# применяется еще один параметр по ссылке base, который используется для работы с базовым (родительским) объектом. Если Вы внимательно посмотрите исходный код файла Form1.Designer.cs,а именно метод void Dispose(bool disposing), то в последних строках кода этого метода обычно находится запись base.Dispose(disposing);, которая позволяет при удалении объекта из памяти удалять и родительский (базовый) объект.