1

foo我有一个包含 20 个成员的类(我们称之为)。该类有一个方法 public foo Rotate(double angle)

此方法将调用对象旋转一定角度并创建一个新foo对象。新对象的 10 个成员始终与调用对象相同。

实现此类的最佳方法是什么,这样我就不必在每次调用 Rotate 方法时重新计算所有 20 个成员?

4

2 回答 2

0

假设您可以在类之外更改类属性,我认为您最好的解决方案是复制构造函数

这实质上意味着您在类中定义一个构造函数,该构造函数将同一类的对象作为参数,然后将对象的所有属性复制到一个新对象中。

由于您所做的只是分配值,因此效率没有问题(假设值是原语)。

然后,一旦您初始化了新对象,将 10 个不同的属性设置为它们的旋转对应物。

于 2012-07-17T22:45:22.687 回答
0

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.

于 2012-07-17T22:49:20.100 回答