Конструктор экземпляра C # против статического конструктора - PullRequest
6 голосов
/ 01 октября 2010

В чем различия между двумя? Я использовал только один вид конструктора, и я считаю, что это статический конструктор. Знаком только с C ++ и Java.

Ответы [ 3 ]

11 голосов
/ 01 октября 2010

Статический конструктор вызывается при первом обращении к вашему классу, т. Е.

MyClass.SomeStaticMethod()

Конструктор экземпляра вызывается каждый раз, когда вы делаете 'MyClass dummy = new MyClass()', т.е. создаете экземпляр класса

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

5 голосов
/ 01 октября 2010

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

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

static MyClass()
{
}

Конструкторы экземпляров - это те, которые вызываются при создании новых объектов (экземпляров классов). Это также те, которые вы обычно используете в Java и большинстве других объектно-ориентированных языков.

Вы используете их, чтобы придать вашим новым объектам начальное состояние. Они могут быть перегружены и могут принимать параметры:

public MyClass(int someNumber) : this(someNumber, 0) {}

public MyClass(int someNumber, int someOtherNumber)
{
    this.someNumber = someNumber;
    this.someOtherNumber = someOtherNumber;
}

Телефонный код:

MyClass myObject = new MyClass(100, 5);
1 голос
/ 01 октября 2010

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

Все, что вам нужно знать о статических конструкторах, можно найти здесь: http://msdn.microsoft.com/en-us/library/k9x6w0hc(v=VS.100).aspx

...