Статические конструкторы вызываются автоматически перед любым использованием класса и не должен быть вызван вручную, так что правильный ответ, чтобы сделать что-то на Test
класс, как:
public class Class1
{
public void CallStaticConstructorHere()
{
new Test();
}
}
Но в 99% случаев вам все равно, время выполнения вызовет его при необходимости.
В некоторых случаях (например, для принудительной инициализации во время запуска, чтобы он не выполнялся во время использования приложения или в SetUp некоторых модульных тестов), вам может потребоваться его принудительное.
Класс RuntimeHelpers
обеспечивают эту возможность:
public class Class1
{
public void CallStaticConstructorHere()
{
RuntimeHelpers.RunClassConstructor(typeof(Test).TypeHandle);
}
}
PS: Название RunClassConstructor
вводит в заблуждение его запустить, только если она не запускали
PS (2): Я не» t знать точный вопрос, но если интервьюер говорил о конструкторе базового класса (Class1 : Test
), это бесполезно, так как никакой код в производном классе никогда не будет вызван без вызываемого ранее статического конструктора базового класса.
Статический конструктор вызывает неявно , когда вы получаете доступ к любому статическому свойству или методу или созданию экземпляра. – vmeln
Доступ к любому другому статическому члену класса или создание экземпляра класса и *, если ничто другое не вызвало его уже *, чем будет вызван статический конструктор. Вам никогда не придется заставлять это случиться. –