In C# 6 Microsoft introduces a new feature Expression-bodied Methods which is very similar to and inspired by anonymous lambda expression. But there are some differences between these two.

In case of Expression-bodied methods it must have return type, name and returned expression.

We can use access modifiers (private, public, protected, internal and protected internal) with expression-bodied method. We can declare it as virtual, static or it can also override its parent class method. It can be asynchronous if it is returning void.

Example 1: Expression-bodied method having access modifier as public and return type string,

  1. public string GetUserDetails() => $"{UserId} + {UserName} + {EmailId} + {ContactNumber}";

Complete Code

  1. class User
  2. {
  3. public int UserId { get; set; }
  4. public string UserName { get; set; }
  5. public string EmailId { get; set; }
  6. public string ContactNumber { get; set; }
  7. public string GetUserDetails() => $"{UserId} + {UserName} + {EmailId} + {ContactNumber}";
  8. }

In the above example GetUserDetails() method is having access modifier public and return type string.

Example 2: Override an existing method using Expression-bodied Method,

  1. public override string ToString()=> $"{UserId} + {UserName} + {EmailId} + {ContactNumber}";

Complete code

  1. class User
  2. {
  3. public int UserId { get; set; }
  4. public string UserName { get; set; }
  5. public string EmailId { get; set; }
  6. public string ContactNumber { get; set; }
  7. public string GetUserDetails() => $"{UserId} + {UserName} + {EmailId} + {ContactNumber}";
  8. public override string ToString()=> $"{UserId} + {UserName} + {EmailId} + {ContactNumber}";
  9. }

Example 3: Creating a Virtual method using Expression-bodied Method and override it.

  1. public virtual string GetUserDetails() => $"{UserId} + {UserName} + {EmailId} + {ContactNumber}";
  2. public override string GetUserDetails() => $"{UserId} + {UserName} + {EmailId} + {ContactNumber} + {Rank}";

Complete code

  1. class User
  2. {
  3. public int UserId { get; set; }
  4. public string UserName { get; set; }
  5. public string EmailId { get; set; }
  6. public string ContactNumber { get; set; }
  7. public virtual string GetUserDetails() => $"{UserId} + {UserName} + {EmailId} + {ContactNumber}";
  8. public override string ToString()=> $"{UserId} + {UserName} + {EmailId} + {ContactNumber}";
  9. }
  10. class SilverUser : User
  11. {
  12. public int Rank { get; set; }
  13. public override string GetUserDetails() => $"{UserId} + {UserName} + {EmailId} + {ContactNumber} + {Rank}";
  14. }