Я обычно пытаюсь сделать вывод о доступе к вспомогательным переменным:
Иногда общедоступный метод получения может содержать сложную проверку данных, вызывать события изменения свойств или какой-либо другой сложный код, который запускается, когда некоторые внешние *Код 1004 * меняет значение.
При изменении этого значения внутренне (изнутри класса), может быть правильным использовать непосредственную переменную поддержки, если вы намерены пропустить все проверки и события из открытых источников.сеттер.Это все равно что сказать: «Я инстанс класса, я знаю, что делаю».Таким образом, общедоступный сеттер ведет себя как сторожевая собака, дезинфицируя внешний вход, в то время как я все еще могу установить свойство внутренне так, как мне нужно.
class X
{
private int y; //not strictly necessary but good for documentation
public X(int number)
{
y = GetYValueFromDB(); //we assume the value from DB is already valid
}
public int Y {
get{ return y};
set {
if (ComplexValidation(value)
{
RaiseOnYPropertyChanged();
y = value;
}
}
}