Меня интересует следующий код C #:
struct Structure
{
public Structure(int a, int b)
{
PropertyA = a;
PropertyB = b;
}
public int PropertyA { get; set; }
public int PropertyB { get; set; }
}
Он не компилируется с ошибкой «Объект 'this' не может быть использован до тех пор, пока не будут присвоены все его поля». Для аналогичного класса компилируется без проблем.
Это можно сделать работающим путем рефакторинга до следующего:
struct Structure
{
private int _propertyA;
private int _propertyB;
public Structure(int a, int b)
{
_propertyA = a;
_propertyB = b;
}
public int PropertyA
{
get { return _propertyA; }
set { _propertyA = value; }
}
public int PropertyB
{
get { return _propertyB; }
set { _propertyB = value; }
}
}
Но я думал, что весь смысл введения автоматических свойств в C # состоит в том, чтобы избежать написания более позднего кода. Означает ли это, что автоматические свойства не имеют отношения к структурам?