Два упомянутых вами блока кода - это две разные вещи.
Первый блок - это автоматически реализованное определение свойства .Это синтаксический сахар для определения полного свойства, которое выглядит следующим образом:
private static bool _initialized;
public static bool Initialized
{
private set
{
_initialized = value;
}
get
{
return _initialized;
}
}
Ваш второй блок кода - это определение статического члена .Если вы посмотрите на расширение, которое я дал выше, вы заметите, что оно включает определение частного статического члена.Если вы хотите указать начальное значение, вы можете сделать это здесь:
private static bool _initialized = false;
public static bool Initialized
{
private set
{
_initialized = value;
}
get
{
return _initialized;
}
}
Используемое вами определение встроенного свойства было разработано только для того, чтобы сделать код немного короче в наиболее распространенном случае.Если вы хотите сделать что-то еще, вы можете использовать полную форму кода свойства.
В качестве альтернативы, вы можете пойти по совершенно другому маршруту и использовать статический конструктор.(См. ответ Кори )