См. «Расширенное программирование на C#, четвертое издание».
· Одной из причин написания статического конструктора является то, что класс имеет некоторые статические поля или свойства, которые необходимо инициализировать из внешнего источника перед первым использованием класса.
· Статические конструкторы запускаются не чаще одного раза, прежде чем код ссылается на класс.
· Статический конструктор не имеет модификаторов доступа и никогда не вызывается другим кодом C#, поэтому модификаторы доступа, такие как public и Private, бессмысленны.
· Статический конструктор не может принимать никаких параметров, а класс может иметь только один статический конструктор.
· Статические конструкторы могут обращаться только к статическим членам класса, но не к членам экземпляра.
Пример приведен ниже:
Публичный класс UserPreferences
{
общедоступный статический Color BackColor только для чтения;
статические пользовательские настройки()
{
//читаем BackColor из источника;
}
// ...
}
классMainEntryPoint
{
статическая пустота Main()
{
Console.WriteLine(UserPreferences.BackColor.ToString());
}
}
Обратите внимание, что конструкторы экземпляров без параметров могут безопасно сосуществовать со статическими конструкторами в классе. Хотя список параметров тот же, противоречия нет, поскольку статический конструктор выполняется при загрузке класса, а конструктор экземпляра выполняется при создании экземпляра, поэтому конфликта при выполнении конструктора не будет.
класс MyTempClass
{
public static int num = 100;
статический MyTempClass()
{
число = 101;
}
}
классная программа
{
static void Main(string[] args)
{
интервал х = MyTempClass.num;
Консоль.WriteLine();
}
}
В приведенной выше программе, если статический конструктор не добавлен, значение x равно 100. После добавления конструктора значение x равно 101.