Различия в производительности между автоматическими свойствами и обычно декларируемыми свойствами. Правда или ложь?

Есть ли какая-либо разница между автоматически внедряемыми и внедренными свойствами с точки зрения производительности?

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

Другие вопросы по тегам