是否有更好的方法确保以下Test
类的不变性,而不必在每次获得属性Array
获得处理时都返回数组的新深度副本(请假设DeepCopy()
是一种扩展方法,该方法会创建新的深度复制的数组)?公共属性和不变性
public class Test
{
private SomeObject[] _array;
public SomeObject[] Array
{
get { return (_array.DeepCopy();) }
}
public Test(SomeObject[] array)
{
_array = array.DeepCopy();
}
}
这会在初始化时创建一个深层副本,而每次访问该属性时都会创建一个深层副本。有没有更好的方法来实现不变性?
你可能是指BCL,而不是CLR ...... –
@Thomas:当然可以。定影... – Richard