2015-09-20 2 views
1

У меня есть класс, который нужно только инициализировать один раз в моем коде, но функция, в которой он находится, вызывается несколько раз, и класс инициализируется снова и снова. Этот класс нужно вызвать только один раз, потому что данные, которые передаются в него, никогда не меняются, и это пустая трата, чтобы мой код повторно инициализировал его более одного раза. Я хочу, чтобы мой код проверял, что этот класс уже инициализирован и может получить необходимую информацию, которая уже была сгенерирована. Моя первая мысль заключалась в том, чтобы дизайн на основе шаблона Singleton, но я не думаю, что это необходимо, так как этот класс не нужен нигде в моем коде. Что такое простой способ сделать что-то подобное?Как избежать повторной инициализации класса, который никогда не изменяется?

+0

Как насчет статического класса – Rohit

ответ

2

Сделать его статическим. Класс будет инициализирован при первом использовании ...

+0

Если бы я сделал статический класс, мне пришлось бы также ставить функции и переменные в нем? – Lotzi11

+0

пользователь3344076, обязательно. Все там должно быть статичным. – Spawn

+0

Благодарим вас за помощь. Я все еще новичок в этом, так что спасибо за то, что я с ним обошел. – Lotzi11

1

A static class - один из подходов.

public static class MyClass 
{ 
    public static bool IsInited { get; private set; } 
    public static void Init(...) 
    { 
     ... 
     IsInited = true; 
    } 
} 

Если Init не имеет аргументов, например. может установить все свойства самостоятельно, тогда вы можете использовать static constructor вместо Init. В основном конструктор будет называться в первый раз, когда другой код обращается к свойству.

public static class MyClass 
{ 
    public static bool IsUnix { get; private set; } 
    static MyClass() 
    { 
     IsUnix = Environment.NewLine == '\n'; 
    } 
Смежные вопросы