Ответ 1
Эта функция называется автоматически реализованные свойства и введена с С# 3.0
В С# 3.0 и более поздних версиях автоматически реализованные свойства Объявление свойства более кратким, если дополнительная логика не требуется в аксессуарах свойств. Они также позволяют создавать код клиента для создания объекты. Когда вы объявляете свойство, как показано ниже Например, компилятор создает частное, анонимное фоновое поле доступ к которым возможен только через свойство get и set аксессоры.
class Customer
{
// Auto-Impl Properties for trivial get and set
public double TotalPurchases { get; set; }
public string Name { get; set; }
public int CustomerID { get; set; }
По вашему вопросу
В чем разница между двумя?
В вашем случае нет. Поскольку вы ничего не делаете при настройке или извлечении значения, но предположите, что вы хотите выполнить некоторую проверку или хотите выполнить другие типы проверок, выполните следующие действия:
private int someInt;
public int RetInt
{
get
{
if (someInt > 0)
return someInt;
else
return -1;
}
set { someInt = value; } // same kind of check /validation can be done here
}
Вышеизложенное не может быть выполнено с помощью свойств Auto реализованного.
Еще одна вещь, где вы можете видеть разницу, - это инициализировать свойство пользовательского типа класса.
Если у вас есть список MyClass
Тогда в случае нормальной собственности, его поддержка поле может быть инициализирован/экземпляр, кроме конструктора.
private List<MyClass> list = new List<MyClass>();
public List<MyClass> List
{
get { return list; }
set { list = value; }
}
В случае свойства Auto реализовано
public List<MyClass> SomeOtherList { get; set; }
Вы можете только инициализировать SomeOtherList
в конструкторе, вы не можете сделать это на полевом уровне.