Определение конструкторов типов

Определение конструкторов типов

Система CTS (общая система типов) поддерживает конструкторы как уровня экземпляра, так и уровня класса (статические конструкторы). В терминах CIL для конструкторов уровня экземпляра используется лексема .ctor, а для статических конструкторов – лексема .cctor (конструктор класса). Обе эти лексемы CIL должны сопровождаться атрибутами rtspecialname (специальное имя возвращаемого типа) и specialname. Эти атрибуты используются для идентификации специальных лексем CIL, позволяющих уникальное толкование в каждом языке .NET. Например, в C# конструкторы не определяют возвращаемый тип, однако в терминах CIL возвращаемым значением конструктора на самом деле будет void.

.class public MyBaseClass {

 .field private string stringField

 .field private int32 intField

 .method public hidebysig specialname rtspecialname instance void .ctor(string s, int32 i) cil managed {

  // Задача: добавить необходимый программный код.

 }

}

Обратите внимание на то, что директива .ctor сопровождается атрибутом instance (поскольку это не статический конструктор). Атрибуты cil managed означают, что в контексте этого метода содержится программный код CIL (а не программный код, не являющийся управляемым), который может использоваться в межплатформенных запросах.