C#6带来了一些新功能,包括仅具有getter的自动属性 和类似属性的函数成员.
我想知道这两个属性之间有什么区别?我有什么理由喜欢彼此吗?
public class Foo { public string Bar {get;} = "Bar"; public string Bar2 => "Bar2"; }
我知道{get;} =
只能通过static
调用或常量值设置并且=>
可以使用实例成员.但在我的特殊情况下,我应该选择哪一个?为什么?
用C#1来展示它们是最简单的:
public class Foo { private readonly string bar = "Bar"; public string Bar { get { return bar; } } public string Bar2 { get { return "Bar2"; } } }
如你所见,第一个涉及一个领域,第二个没有.所以你通常使用第一个东西,其中每个对象可以具有不同的状态,例如在构造函数中设置,但第二个具有在这种类型的所有对象中保持不变的东西,因此不需要任何每个对象状态(当然,或者你只是委托给其他成员).
基本上,如果您没有可用的C#6,请问自己上面的哪些代码,并选择相应的C#6路径.