Принципы объектно-ориентированного программирования

         

Чем занимается компилятор на самом деле



Чем занимается компилятор на самом деле

Итак, как же компилятор позволяет вызывать метод с помощью стандартного синтаксиса объект.поле! И откуда берется переменная value"! Чтобы ответить на эти вопросы, взглянем на MSIL-код, сгенерированный компилятором. Сначала рассмотрим метод-получатель свойства. В следующем примере определен такой метод-получатель:

class Address

{


protected string city; protected string zipCode; public string ZipCode {

get {

return zipCode;

} >

>

Взглянув на MSIL, получившийся из этого метода, вы увидите, что компилятор создал метод-аксессор getJZipCode, как показано ниже:

.method public hidebysig specialname instance string. get_ZipCode() cil managed

{

// размер 11 (Oxb)

.maxstack 1

.locals ([0] string _Vb_t_$00000003$00000000)

IL.OOOO: ldarg.0

IL_0001: Idfld string Address::zipCode

IL_0006: stloc.O

IL_0007: br.s IL_0009

IL_0009: ldloo.0

ILJWOa: ret } // конец метода Address::get_ZipCode

Вы можете сообщить имя метода-аксессора, поскольку компилятор добавляет к имени префикс get_ (в случае метода-получателя) или set_

(в случае метода-установщика). В результате следующий код разрешается как вызов get__ZipCode:



Содержание раздела