Различия в производительности между автоматическими свойствами и обычно декларируемыми свойствами. Правда или ложь?
Есть ли какая-либо разница между автоматически внедряемыми и внедренными свойствами с точки зрения производительности?
3 ответа
потому что, как мы знаем, они создаются во время выполнения
Авто-свойства не создаются во время выполнения, они создаются во время компиляции. Очень похоже using
, они являются полезным синтаксическим сахаром, чтобы уменьшить количество печатания, которое вам нужно сделать. Они просто переводят в код, который вы все равно написали бы вручную.
Там нет разницы в производительности. Помимо имени вспомогательного поля, результирующий код такой же, как если бы вы делали это вручную.
Как подчеркивает @dasblinkenlight, имя поддержки, являющееся "безопасным именем" (как, впрочем, никогда не могло бы создать его в C#), может вызвать проблемы сериализации, когда имя не может быть обработано правильно.
Там нет разницы. Автоматические свойства преобразуются в обычные свойства во время компиляции. так вот:
public int Prop { get; set; }
превращается в нечто эквивалентное этому:
private int _PropField;
public int Prop {
get { return _PropField; }
set { _PropField = value; }
}
Авто свойства являются синтаксическим сахаром означает, что они являются сокращением написания свойств
Взято из MSDN:
В C# 3.0 и более поздних версиях автоматически реализуемые свойства делают объявление свойства более кратким, когда в средствах доступа к свойствам не требуется никакой дополнительной логики. Они также позволяют клиентскому коду создавать объекты. Когда вы объявляете свойство, как показано в следующем примере, компилятор создает частное анонимное поле поддержки, доступ к которому возможен только через методы доступа get и set свойства.
http://msdn.microsoft.com/en-us/library/bb384054(v=vs.90).aspx