在C#中实现此类的最佳方法是什么?

时间:2012-07-17 22:27:42

标签: c# .net

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

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

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

2 个答案:

答案 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个字段是值类型,那么您应该设置。如果不是,那么使用复制构造函数可能更安全。