Компилятор превращает это:
public string Something { get; set; }
В что-то вроде этого (в IL, для вашего удобства преобразовано в C #):
string _something;
public string get_Something() { return _something; }
public void set_Something(string value) { _something = value; }
Также компилятор переворачивает эти строки:
Something = "test";
var result = Something;
В это:
set_Something("test");
var result = get_Something();
Итак, вы видите, что все вызовы методов ниже (как в Java), но на самом деле мило иметь синтаксис свойства в C #. Но если вы попытаетесь вызвать эти методы напрямую, вы получите error .