早上好,这是一个不变性的良好实践吗?
假设我有一类
public class Class
{
int something;
int[] otherThing;
}
,我想使Class
类型不变的对象。再假设我有一个创建Class
类型的新对象非常频繁操作,
public Class SomeFunction()
{
int[] Temp = new int[] { ... };
return new Class(1, Temp);
}
为了避免过于频繁地创建新的对象,而且由于Temp
不再是该方法的访问,是不是太糟糕设置在构造
this.otherThing = Temp;
代替
otherThing = new uint[Temp.Length];
for (int i = 0; i < Temp.Length; i++)
{
this.otherThing[i] = Temp[i];
}
?
非常感谢。
-1。事实上,我知道这正是我提出这个问题的原因。而且,他们不会指向相同的阵列。它们将指向作为参数传递给构造函数的数组,每次调用该方法时都是新的。 – Miguel 2011-03-07 10:45:29
@Miguel:不,数组是引用类型,所以它们是通过并存储为引用。 – Euphoric 2011-03-07 11:08:54
好,既然你想它是不可变的,我会说你需要一个新的数组(如上所述),除非你100%确定数组不会改变。但是这是一个常量,你不需要每次都通过它。 – Geniedesalpages 2011-03-07 11:46:36