foo
我有一个包含 20 个成员的类(我们称之为)。该类有一个方法
public foo Rotate(double angle)
。
此方法将调用对象旋转一定角度并创建一个新foo
对象。新对象的 10 个成员始终与调用对象相同。
实现此类的最佳方法是什么,这样我就不必在每次调用 Rotate 方法时重新计算所有 20 个成员?
假设您可以在类之外更改类属性,我认为您最好的解决方案是复制构造函数。
这实质上意味着您在类中定义一个构造函数,该构造函数将同一类的对象作为参数,然后将对象的所有属性复制到一个新对象中。
由于您所做的只是分配值,因此效率没有问题(假设值是原语)。
然后,一旦您初始化了新对象,将 10 个不同的属性设置为它们的旋转对应物。
You can use MemberwiseClone
to do a shallow copy of all your fields:
public class Foo
{
public Foo Rotate(int angle)
{
var newInstance = (Foo)this.MemberwiseClone();
// do other stuff...
return newInstance;
}
}
If the 20 fields are value types then you should be set. If they are not then you are probably safer using a copy constructor.