Expression-bodied members in C#


Expression-bodied members

C# supports expression-bodied members that allow us to write more compact code by using expressions directly instead of wrapping them into properties. To get better idea about expression-bodied members take a look at the following code sample where Distance is expression-bodied member.

public double A { get; set; }
public double B { get; set; }
public double Distance => Math.Sqrt(X * X + Y * Y);

Expression-bodied members in action

Now let's see some real stuff where expression-bodied members can be of great help. Here is the InvoiceLine class with some properties that perform calculations.

We can turn calculating properties to expression-bodied members like show below.

Client code that uses InvoiceLine class doesn't need any changes due to this change in InvoiceLine class

foreach(var line in invoice.Lines)
    invoiceTotal += line.Total;

Using expressions with arguments

Expression-bodied members can be also expressions with arguments like shown in following example. There is simple task with worklogs collection. Collection is initialized when class is created and after this some worklogs are added to task. Then time spent on task today and yesterday is calculated.

Be careful with more complex expression-bodied members and make sure they don't grow too big and doesn't form bad mess or spaghetti code.

Create your playground on
This playground was created on, our hands-on, knowledge-sharing platform for developers.
Go to