Эффективность и производительность членов выраженных функций в С# 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
Этот синтаксис позволяет проще писать элементы в стиле выражения лямбда. Это единственное различие.