Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Expression-bodied function members efficiency and performance in C# 6.0

Tags:

c#

c#-6.0

In a new C# 6.0 we can define methods and properties using lambda expressions.

For instance this property

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

can be now defined as follows:

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

The information about expression-boided function members you can find here: http://blogs.msdn.com/b/csharpfaq/archive/2014/11/20/new-features-in-c-6.aspx

Does anyone know if there's any overhead when using new syntax? Can it slow down (or improve efficiency of) the application or maybe it doesn't matter?

like image 710
Arkadiusz Kałkus Avatar asked Feb 09 '15 13:02

Arkadiusz Kałkus


People also ask

What are expression-bodied members?

Expression-bodied members provide a minimal and concise syntax to define properties and methods. It helps to eliminate boilerplate code and helps writing code that is more readable. The expression-bodied syntax can be used when a member's body consists only of one expression.

What is an expression-bodied method?

An expression-bodied method consists of a single expression that returns a value whose type matches the method's return type, or, for methods that return void , that performs some operation.

Which is correct syntax for expression-bodied function?

The Syntax of expression body definition is, member => expression; where expression should be a valid expression and member can be any from above list of type members.

Can C# expression-bodied method contain multiple expression?

Yes, you can.


2 Answers

In a new C# 6.0 we can define methods and properties using lambda expressions.

No, you can't. You can define method and property bodies using syntax which looks like a lambda expression, in that it uses the token =>.

However, importantly this does not mean that there's a delegate type involved. (Whereas a lambda expression is only permitted in a context where it's converted to an expression tree or delegate type.)

This is purely syntactic sugar. Your two example code snippets will compile to the exact same IL. It's just a different way of representing the body of a property getter or method.

like image 176
Jon Skeet Avatar answered Sep 18 '22 14:09

Jon Skeet


They will compile down to the same IL, you can always test this yourself by doing it and using ildasm to extract the IL.

like image 24
tolanj Avatar answered Sep 20 '22 14:09

tolanj