Между этими двумя фрагментами нет большой разницы - вы не можете передать свойство, например, по ссылке, но это редко проблема. Однако, если вы хотите, чтобы поле было доступно только для чтения, например:
private readonly int _backingField;
public int Property { get { return _backingField; } }
тогда есть разница. Код, который я написал выше, предотвращает изменение значения в другом месте в классе, давая понять, что на самом деле он должен быть неизменным. Я бы очень хотел иметь возможность объявить поле только для чтения с автоматически реализуемым свойством только для чтения, которое можно установить только внутри конструктора, но в данный момент оно недоступно.
Кстати, это довольно странно:
Кроме того, я понимаю, что вы должны явно использовать поле поддержки в случае структур, вы не можете получить доступ к их членам через свойства.
Что вы имеете в виду? Вы можете определенно использовать свойства в структурах. Вы говорите о вспомогательных полях, которые являются изменяемыми структурами, то есть разница между:
foo.someField.X = 10;
и
foo.SomeProperty.X = 10;
? Если это так, я обычно избегаю этой проблемы, делая свои структуры неизменными для начала:)