如果我有一个只有只读字段的 C# 类,但字段的类型不是不可变的,那么该类是否被认为是不可变的?
这个类是不可变的吗?
public class Foo
{
private readonly int[] _blah;
public Foo(int[] blah)
{
_blah = blah;
}
public int[] Blah { get { return _blah; } }
}
_blah 不是不可变的,因为我可以更改数组的成员,尽管数组成员变量永远不会改变。
那么,如果一个类的字段都是只读的,那么它是不可变的,还是只有当它的字段不仅是只读的,而且本身也是不可变的时,一个类才是不可变的?