Статическое поле / инициализация свойства - PullRequest
3 голосов
/ 20 января 2011

Если бы у меня был такой тип:

public struct Effect
{
    public int Value { get; set; }

    public static int MinValue = Int32.MinValue;
}

Будет ли MinValue инициализироваться только ОДИН РАЗ, точно так же, как выполнение статического конструктора?Или я должен инициализировать MinValue внутри статического конструктора?

Может ли это быть иначе для classes?

Ответы [ 3 ]

4 голосов
/ 20 января 2011

Да, он будет инициализирован только один раз для процесса (домена приложения).

4 голосов
/ 20 января 2011

Да, он будет инициализирован ровно один раз, до выполнения статического конструктора. То же самое для ссылочных типов (классов).

3 голосов
/ 20 января 2011

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

Насколько я знаю, нет никакой разницы в инициализации типов между классами и структурами.

Обратите внимание, что ваше поле MinValue является общедоступным и доступным для записи - так и должно быть?Это кажется плохой идеей.

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