Tom Nolane и
flafy4 Геттеры и сеттеры нужны не только чтобы "выводить приватную переменную наружу".
Если приватные переменные прячут в "приватной области видимости" значит это кому-нибудь нужно. Что мешает просто изменить модификатор доступа у поля сделав его доступным снаружи, чем городить какие-то геттеры/сеттеры?
Есть куча более интересных применений геттеров и сеттеров, например:
уведомить об изменении состояния объекта:
string _StateValue;
public string stateValue
{
get {return _StateValue; }
set
{
_StateValue = value;
OnStateValueChanged(value); //этот метод генерирует событие на которое подписаны все кому интересно изменения этого поля, например при изменении поля могут по событию перерисовываться форма
}
}
выполнить отложенную инициализацию поля, хотя есть и другие способы это сделать, например через Lazy:
string _CaсhedValue = null;
string cachedValue
{
get
{
if (_CachedValue == null)
{
_CachedValue = CreateValue(); //этот метод вычисляет значение
}
return _CachedValue;
}
}
вычисляемые свойства
PointF _Start;
PointF _Stop;
PointF center
{
get
{
return new PointF((_Start.X+_Stop.X)/2,(_Start.Y+_Stop.Y)/2);
}
}
это только первое что в голову пришло...