Конструкторы в C#

Конструкторы вызываются при первоначальной загрузке класса средой CLR или при создании объекта. Существуют два типа конструкторов: статические конструкторы и конструкторы экземпляра. Класс может иметь только один статический конструктор, не имеющий параметров.

Он вызывается, когда CLR загружает тип. Имя статического конструктора должно совпадать с именем класса, к которому он принадлежит. Как и к любому другому члену класса, к статическому конструктору можно присоединять атрибуты метаданных.

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

Можно также предпринять любые другие действия по инициализации, такие как подключение к базе данных и открытие файла. У класса может быть несколько конструкторов экземпляра, которые могут быть перегружены (т.е. иметь разные типы параметров).

Подобно статическим конструкторам, конструкторы экземпляра именуются по названию определяющего их класса. Одна заслуживающая упоминания особенность конструкторов экземпляра состоит в необязательности выражения инициализатора.

С помощью инициализатора, который следует за двоеточием после списка параметров, можно вызвать конструктор базового класса или другой конструктор того же класса, указывая, соответственно, ключевые слова basenthis.

Рассмотрим следующий пример кода с двумя комментариями:

1
2
3
4
5
6
7
8
9
10
11
12
class Base {
public int x = InitXO;
public Base ( int x )
{
this.x = x; // устранение неоднозначности между
// параметром и переменной экземпляра
}
class Derived : Base {
public Derived( int a )
:base( a ) // вызов конструктора базового класса
{ }
}

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100