Автоматические свойства являются синтаксическим сахаром для свойств на основе поля.
Свойства являются синтаксическим сахаром для методов установки и / или получения.
Следовательно, код, который вы даете, более или менее эквивалентен:
private string _name;
public string get_Name()
{
return _name;
}
private void set_Name(string value)
{
_name = value;
}
Тогда string val = Obj.Name
становится эквивалентным string val = Obj.get_Name()
, который может быть встроен в string val = Obj._name
.
Аналогично, код
string val = "Default Name";
if(Obj != null)
val = Obj.Name;
Is эквивалентен:
string val = "Default Name";
if(Obj != null)
val = Obj.get_Name();
Который может быть встроен в:
string val = "Default Name";
if(Obj != null)
val = Obj._name;
Обратите внимание, что private
и public
относятся к компиляции, а не к выполнению, поэтому пока факт, что поле поддержкиЗначение private означает, что Obj._name
будет недопустимым вне рассматриваемого класса, разрешен эквивалентный код, созданный путем встраивания.