Код:
class X
{
public int test
{
get; set;
}
}
... является прямым эквивалентом этого:
class X
{
private int test_;
public int test
{
get { return test_; }
set { test_ = value; }
}
}
Первый пример - это автоматически реализуемое свойство.Компилятор C # автоматически создает второй пример при компиляции.
Теперь код, который вы представили первым, имел следующую строку:
set { if (test_ != value) test_ = value; }
Вы заметите, что он делает что-то отличное отавтоэквивалентный эквивалентный код.И в этом заключается различие между этими двумя подходами.
Когда вы используете вспомогательное поле для своих свойств, вы можете ввести конкретные правила, которым должен следовать ваш код.
Например, вы можетеВы хотите установить громкость звука в музыкальном приложении, поэтому ваш код может выглядеть следующим образом:
public class Music
{
private int _volume = 7;
public int Volume
{
get { return _volume; }
set
{
if (value >= 0 && value <= 10)
{
_volume = value;
}
}
}
}
Обычно ваша личная переменная поля обычно имеет логику, подобную этой.