Когда я создаю автоматическое свойство, что происходит в фоновом режиме?

редактировать: совершенно другой вопрос, чем этот я спрашиваю, как автосвойства работают внутри

Когда я создаю автоматическое свойство, что происходит в фоновом режиме?

Это равно

public int SomeProperty {get; set;}

Этот

 private int _someField;
 public int SomeProperty 
 {
    get { return _someField;}
    set { _someField = value;}
 }

Это то, что происходит буквально (то есть создается приватное поле), или оно представлено только для объяснения вещей, и оно работает по-другому?


person RazaUsman_k    schedule 22.04.2017    source источник
comment
Совсем другой вопрос, зачем помечать как дубликат -_-   -  person RazaUsman_k    schedule 22.04.2017
comment
Я повторно открыл вопрос, потому что в ответах на дублированный вопрос упоминалось только одно преобразование, то есть код эквивалентен этому, но они не упоминают, что свойства являются просто методами, а методы получения и установки генерируются за кулисами.   -  person Selman Genç    schedule 22.04.2017


Ответы (1)


Да, это именно то, что происходит, это:

public int SomeProperty {get; set;}

Является синтаксическим сахаром для этого:

private int _someField;
public int SomeProperty 
{
   get { return _someField;}
   set { _someField = value;}
}

И это синтаксический сахар для:

private int _someField;

public int get_SomeProperty()
{
    return _someField;
}

public void set_SomeProperty(int value)
{
    _someField = value;
} 

Вы можете сами увидеть реализацию, используя ildasm.exe. :

введите описание изображения здесь

Существует два метода для получения и установки значения частного поля. Разница лишь в том, что имя генерируемого поля.

person Selman Genç    schedule 22.04.2017