Этот синтаксис обычно называют «синтаксическим сахаром», что означает, что компилятор берет этот синтаксис и переводит его во что-то еще. В вашем примере компилятор сгенерирует код, который выглядит примерно так:
[CompilerGenerated]
private int <Age>k_BackingField;
public int Age
{
[CompilerGenerated]
get
{
return this.<Age>k_BackingField;
}
[CompilerGenerated]
set
{
this.<Age>k_BackingField = value;
}
Даже зная все это, вы могли бы , вероятно, получить прямой доступ к вспомогательному полю, но такого рода поражение цели использования автоматических свойств невозможно. Я говорю, вероятно, здесь, потому что вы зависите от деталей реализации, которые могут измениться в любой момент в будущем выпуске компилятора C #.