В более старых версиях C # не было автоматических свойств, поэтому вы должны были объявить переменные, на которые действовали свойства, как в вашем примере. В наши дни тот же код может быть выражен как:
public int Age { get; set; }
Я думаю, что это отвечает на ваш вопрос. Однако, если вы спрашиваете «почему бы просто не использовать public int Age; и позволить программистам устанавливать значение в поле напрямую?», Тогда:
Первое, что нужно иметь в виду, это то, что методы доступа к свойствам компилируются в методы. Это означает, что он отличается от ABI простым чтением / записью в переменную члена класса, даже если он синтаксически выглядит так же, как если бы вы имели:
class Fu {
public int Age;
}
Итак, это означает, что если в какой-то момент в будущем вам нужно добавить какое-либо уведомление об изменении поля Age - если вы используете свойства, вы можете легко добавить эту логику уведомления в установщик свойств без ломая ABI.
public int Age {
get { return age; }
set { age = value; NotifySomeOtherCode (); }
}
Если вы начнете с открытого поля, то позднее изменение его на свойство изменит ABI, что плохо для любой программы (программ), которая может зависеть от вашей сборки. Поэтому лучше начать со свойств.
Надеюсь, я понимаю ...