Эффективность и производительность членов выраженных функций в С# 6.0

В новом С# 6.0 мы можем определить методы и свойства, используя лямбда-выражения.

Например, это свойство

public string Name { get { return First + " " + Last; } }

можно определить следующим образом:

public string Name => First + " " + Last; 

Информация о членах функции, находящихся во фразе, вы можете найти здесь: http://blogs.msdn.com/b/csharpfaq/archive/2014/11/20/new-features-in-c-6.aspx

Кто-нибудь знает, есть ли накладные расходы при использовании нового синтаксиса? Может ли это замедлить (или повысить эффективность) приложение или, может быть, это не имеет значения?

Ответ 1

В новом С# 6.0 мы можем определить методы и свойства, используя лямбда-выражения.

Нет, вы не можете. Вы можете определить тела методов и свойств, используя синтаксис, который выглядит как лямбда-выражение, поскольку он использует токен =>.

Однако, что важно, это не означает, что существует тип делегата. (Принимая во внимание, что выражение лямбда разрешено только в контексте, где оно преобразуется в дерево выражений или тип делегата.)

Это чисто синтаксический сахар. Ваши два фрагмента кода кода будут скомпилированы с тем же самым IL. Это просто другой способ представления тела объекта getter или метода.

Ответ 2

Они скомпилируются до одного и того же ИЛ, вы всегда можете проверить это сами, сделав это и используя ildasm для извлечения IL.

Ответ 3

Этот синтаксис позволяет проще писать элементы в стиле выражения лямбда. Это единственное различие.