问题
What are the pros and cons of expression-bodied properties vs straight property declarations? For example, is there any advantage to using;
public string Foo => "Bar"
vs simply
public string Foo = "Bar"
My understanding was the =>
is used when the value comes from a method, like a lambda function. If the value is a primitive like a string or int, why would anyone use an expression-bodied property for that?
回答1:
There are quite a few differences between those two lines of code:
- The first one is a property, the second is a field. For example, you cannot
ref
the firstFoo
. - The property gets evaluated and returns a new object every time, even if the object is the same string literal. The variable is evaluated once and when used it's just loaded. (Note that a better way to write #1 is
public string Foo { get; } = "Bar";
which would also be initialized once and then return the same value). - The first one is read-only (it's a getter only), while the second one is a mutable variable, you can write into it. A closer equivalent would be
public readonly string Foo = "Bar";
or even betterpublic static readonly string Foo = "Bar";
来源:https://stackoverflow.com/questions/62958381/why-use-expression-bodied-properties-for-primitive-values