Why use expression-bodied properties for primitive values? [duplicate]

你。 提交于 2020-07-31 06:12:29

问题


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:

  1. The first one is a property, the second is a field. For example, you cannot ref the first Foo.
  2. 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).
  3. 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 better public static readonly string Foo = "Bar";


来源:https://stackoverflow.com/questions/62958381/why-use-expression-bodied-properties-for-primitive-values

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!