我有一个包含20个成员的类(我们称之为foo
)。这个班有一个方法
public foo Rotate(double angle)
。
此方法以特定角度旋转调用对象并创建新的foo
对象。新对象的10个成员始终与调用对象相同。
实现此类的最佳方法是什么,以便每次调用Rotate方法时都不必重新计算所有20个成员?
答案 0 :(得分:0)
假设您可以在课堂外更改课程属性,我认为您的最佳解决方案是copy constructor。
这实质上意味着您在类中定义了一个构造函数,该构造函数将同一个类的对象作为参数,然后将所有对象的属性复制到一个新对象中。
由于您所做的只是分配值,因此效率没有问题(假设值是基元)。
然后,一旦初始化了新对象,将10个不同的属性设置为它们的旋转对应物。
答案 1 :(得分:0)
您可以使用MemberwiseClone
对所有字段进行浅层复制:
public class Foo
{
public Foo Rotate(int angle)
{
var newInstance = (Foo)this.MemberwiseClone();
// do other stuff...
return newInstance;
}
}
如果20个字段是值类型,那么您应该设置。如果不是,那么使用复制构造函数可能更安全。