Я знаю, что этот вопрос старый, но я бы ответил на него в зависимости от объема значения, а также от того, где его нужно инициализировать или записать.Я стараюсь использовать как можно меньше.Надеемся, что следующее будет более понятно, как принимать решение:
Защищенные значения: Это предполагает, что к значению должен обращаться только базовый класс и / или наследующий класс, а нелюбым внешним кодом ...
Когда наследующий класс должен читать, но никогда не должен изменять значение:
Если значениеможет быть записан один раз в конструкторе базового класса, используйте следующее, что не позволяет наследующему классу писать в него, и идет на шаг дальше и позволяет устанавливать его только в конструкторе:
protected readonly bool test;
Если значение может быть записано в другом методе, отличном от конструктора, но все еще только в базовом классе, используйте следующее, что предотвращает запись в него наследующего класса, но позволяет читать:
protected bool Test { get; private set; }
Когда наследующий класс может изменить значение, используйте следующее, что позволяетнаследующий класс ибазовый класс для записи в него в любой момент:
protected bool test;
Личные значения: Предполагается, что к значению требуется только доступиз класса он объявлен в.
Если его можно установить только один раз в конструкторе, используйте:
readonly bool test;
Если это может быть установлено в любом месте класса, используйте:
bool test;
Кроме того, не забывайте, что если вы объявите его каксвойство, оно должно использовать PascalCase.Если вы объявите его как переменную-член, он должен использовать camelCase.Это облегчит другим разработчикам понимание области применения.