2010-11-04 2 views
0

Что такое быстрее и почему?Инициализатор объектов. Это быстрее, чем старый метод?

Person person = new Person(); 
person.FirstName = "Scott"; 
person.LastName = "Guthrie"; 
person.Age = 32; 

из ...

Person person = new Person { FirstName="Scott", LastName="Guthrie", Age=32 }; 
+0

Просто угадывая здесь, но я считаю, что эти образцы кода скомпилированы с тем же кодом. –

+0

Это называется инициализатор объектов, я обновляю заголовок вопроса. Инициализатор коллекции предназначен для массивов и списков. –

+0

Не важно, какой из них быстрее. –

ответ

2

AFAIK, последний синтаксический сахар для первого. Не должно быть разницы.

+0

Вы правы, CLR будет генерировать тот же код. –

+0

@mt_serg Является ли это CLR или компилятором C#? – jfs

+0

@John Извините, я имею в виду компилятор. –

1

Обозначение инициализатора коллекции будет «расширено» до первой нотации во время компиляции, поэтому не должно быть затрат времени исполнения.

5

Это абсолютно неправильный вопрос, который следует задавать *. Вы должны спрашивать: «какое из следующего более читаемо?» Такой микро-бенчмаркинг ведет к по-настоящему неясному и трудному поддержанию кода (хотя, возможно, и не в этой конкретной ситуации).

  • Исключение - это ситуация, когда вы профилировали свой код и обнаружили, что эта конструкция встречается в очень горячем кодовом пути. Однако, если бы вы это сделали, вы бы также сравнили эти два метода и узнали ответ сами :-).
+0

+1 для отличных советов – Kane

+1

Ну, это совет котловой плиты, когда когда-либо кто-нибудь спрашивает о производительности в Интернете. Это скорее не совпадает с тем, что два бита кода выше одинаковы. –

Смежные вопросы