有时我会看到类定义中定义了只读成员,如下所示:
有时我会看到像这样定义只读成员的类:
第二个例子对我来说看起来更易读/简洁,但我想知道有没有正当理由明确定义只读的后备字段(如第一个例子)?
赞赏深入分析两个示例,最好涵盖在CLR中真正发生的事情。
class Foo
{
private readonly string bar;
public Foo(string bar)
{
this.bar = bar;
}
public string Bar => bar;
}
有时我会看到像这样定义只读成员的类:
and other times I see classes defined with readonly members like so:
class Foo
{
public Foo(string bar)
{
Bar = bar;
}
public string Bar { get; private set; }
}
第二个例子对我来说看起来更易读/简洁,但我想知道有没有正当理由明确定义只读的后备字段(如第一个例子)?
赞赏深入分析两个示例,最好涵盖在CLR中真正发生的事情。
public string Bar {get;}
。你发表的例子public string Bar { get; private set; }
并不是只读的,它只是不能在公共接口中设置。 - Scott Chamberlainpublic string Bar { get; }
。这是另一个C#6的改进。 - Ivan Stoev