Может выглядеть как абстрактное свойство или свойство интерфейса, но оно далеко от него. Чтобы побудить разработчиков использовать свойства (так как они по многим причинам являются лучшими практиками) Microsoft решила включить эту функцию в C # 3, чтобы позволить вам с большей легкостью объявлять свойства.
Вот стандартный способ создания свойства:
String foo;
public String Foo
{
get { return this.foo }
set { this.foo = value; }
}
Теперь для этого нужно немного набрать текст, и поскольку разработчики ленивы до глубины души, иногда нам хочется создать открытые поля, чтобы сэкономить время.
Теперь с помощью компилятора C # 3 мы можем сделать это:
public String Foo { get; set; }
Хотя это выглядит немного странно, рассмотрим работу, которую компилятор выполняет от вашего имени. Предыдущий код компилируется в это:
[CompilerGenerated]
private string <Foo>k__BackingField;
public string Foo
{
[CompilerGenerated]
get
{
return this.<Foo>k__BackingField;
}
[CompilerGenerated]
set
{
this.<Foo>k__BackingField = value;
}
}
Так что, хотя синтаксис выглядит немного странно, вы все равно создаете свойство в точности так, как вы привыкли.