I do have seen many using that new feature, but what is the benefit of using those expressions?
public override string ToString() => string.Format("{0}, {1}", First, Second);
public string Text =>
string.Format("{0}: {1} - {2} ({3})", TimeStamp, Process, Config, User);
This question is different to this one, because I am not only asking if the performance and efficiency does change, but also about the difference of the compiled code (IL code) and if it is best practice and should be used in the real world.
This question is also not off topic, because I am asking for real life enterprise experience and not recommendations. Therefore don't recommend, but explain why you would or why you would not use that feature and what experiences you have with it!
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.
Yes, you can.
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.
It provides better readability and saves some space in your code. It is just nicer.
Answering one of my questions. I have tested out, if the IL code is the same with the following results:
static void Main(string[] args)
{
    Console.WriteLine(MyClass.GetTexted);
}
class MyClass
{
    private static string dontTouchMe = "test";
    public static string GetTexted { get { return dontTouchMe + "1"; } }
    //public static string GetTexted => dontTouchMe + "1";
}
... will generate the same IL code:
00993376  call        [random value]
0099337B  mov         dword ptr [ebp-40h],eax  
0099337E  mov         ecx,dword ptr [ebp-40h]  
00993381  call        71886640  
00993386  nop  
        }
00993387  nop  
00993388  lea         esp,[ebp-0Ch]  
0099338B  pop         ebx  
0099338C  pop         esi  
0099338D  pop         edi  
0099338E  pop         ebp  
0099338F  ret  
The [random value] part is the only code that has changed, which does make sense since it changes every time it is getting compiled.
I am still a student at school, so I can only answer the other questions from my perspective (which is not an enterprise view):
”Expression Bodied Functions and Properties” do seem like a good practice due to a more compact and readable code. (thx to @Wazner and @MacakM)
It does also make sense to use them, because they look more modular and more like OOP code
A body expression provides only a compact and cleaner way to declare a readonly property.
From a performance point of view, you write this:
public bool MyProperty {
    get {
        return myMethod();
    }
}
private bool myMethod() {return true;}
or this:
public bool MyProperty => myMethod();
private bool myMethod() {return true;}
There is no difference because it's translated into IL in the same way.
But pay attention to this thing: the body expression is a feature available by default on Visual Studio 2015 and newer version but if you want use in older VS version you need to install C# 6.0 from NuGet.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With