C # статический конструктор класса - PullRequest
108 голосов
/ 17 июля 2011

Есть ли обходной путь создания конструктора для статического класса?

Мне нужно загрузить некоторые данные при инициализации класса, но мне нужен один и только один объект.

Ответы [ 6 ]

191 голосов
/ 17 июля 2011

C # имеет статический конструктор для этой цели.

static class YourClass
{
    static YourClass()
    {
        // perform initialization here
    }
}

Из MSDN :

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

ссылка MSDN

.

40 голосов
/ 17 июля 2011

Статический конструктор выглядит следующим образом

static class Foo
{
    static Foo()
    {
         // Static initialization code here
    }
}

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

3 голосов
/ 27 мая 2016

Статический конструктор

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

C # имеет статический конструктор для этой цели .

static class YourClass
{
    static YourClass()
    {
        //initialization
    }
}
3 голосов
/ 07 августа 2015

Да, статический класс может иметь статический конструктор, и использование этого конструктора - инициализация статического члена.

static class Employee1
{
    static int EmpNo;
    static Employee1()
    {
        EmpNo = 10;
        // perform initialization here
    }
    public static void Add()
    { 

    }
    public static void Add1()
    { 

    }
}

и статический конструктор вызывается только один раз, когда у вас есть доступ к любому члену типа статического класса с именем класса Class1

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

 Employee1.EmployeeName = "kumod";
        Employee1.Add();
        Employee1.Add();
0 голосов
/ 09 апреля 2019

Мы можем создать статический конструктор

static class StaticParent 
{
  StaticParent() 
  {
    //write your initialization code here

  }

}

и всегда меньше параметра.

static class StaticParent
{
    static int i =5;
    static StaticParent(int i)  //Gives error
    {
      //write your initialization code here
    }
}

и не имеет модификатора доступа

0 голосов
/ 12 июня 2016

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

public class MyClass
{

    public static MyClass()
    {

        //write your initialization code here
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...