private readonly PlayerCollection players = new PlayerCollection();
public PlayerCollection Players { get { return players; } }
或
public PlayerCollection Players { get; private set; }
public MyClass()
{
Players = new PlayerCollection();
}
哪个更好?是否存在两种方式中最适合的方式?
答案 0 :(得分:4)
第一种方式的优点是该字段为readonly
,因此您无法在该类的其他位置再次设置该字段;第二种方式的优势在于它不是,所以你可以。在我看来,这是他们之间做出决定的好方法 - 您希望该字段为readonly
吗?如果是这样,第一种方式;如果不是,第二种方式。
答案 1 :(得分:1)
在第一种情况下,编译器将确保即使从MyClass
内部也不能更改该值。否则它可能是一个洗,你更喜欢的选择。
答案 2 :(得分:1)
从来电者的角度来看,两者之间没有区别。但是,在第一个示例中,没有人(甚至不是MyClass)可以将Players设置为构造函数之外的新PlayerCollection。如果希望编译器强制执行此限制,请使用(1)。否则,请使用(2)。
答案 3 :(得分:0)
使用自动实现。你必须在构造函数中初始化readonly,并且几乎从来没有使用private和readonly相互结合使用。
至少自动实现解决方案允许您在构造函数外部进行初始化,并且仍然只允许从内部进行赋值。