【发布时间】:2016-12-19 17:21:13
【问题描述】:
有时我会看到使用只读成员定义的类,如下所示:
class Foo
{
private readonly string bar;
public Foo(string bar)
{
this.bar = bar;
}
public string Bar => bar;
}
有时我会看到使用只读成员定义的类,如下所示:
class Foo
{
public Foo(string bar)
{
Bar = bar;
}
public string Bar { get; private set; }
}
第二个示例对我来说看起来更易读/更简洁,但我想知道是否有任何正当理由明确定义 readonly 支持字段(根据第一个示例)?
Qudos 对这两个示例进行了深入分析,理想情况下涵盖了 CLR 中真正发生的事情。
【问题讨论】:
-
其实第二个版本非常不同。等效版本是
public string Bar {get;}您发布的public string Bar { get; private set; }示例不是只读的,只是不能公开设置。 -
斯科特,您的评论应该是一个答案。先生说得好。
-
您的第一个示例无法为我编译。
-
@user1620220 为什么?你在使用
-
@series0ne 如果您真的喜欢第二个,那么您可以通过简单地删除 setter 使其与第一个完全等效,例如
public string Bar { get; }。又一个 C#6 改进。
标签: c#