繁体   English   中英

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

[英]What is the best way to implement this class in C#

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

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

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

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

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

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

然后,初始化新对象后,将10个不同的属性设置为其旋转的对应对象。

您可以使用MemberwiseClone对所有字段进行浅表复制:

public class Foo
{
   public Foo Rotate(int angle)
   {
       var newInstance = (Foo)this.MemberwiseClone();
       // do other stuff...
       return newInstance; 
   }
}

如果20个字段是值类型,则应进行设置。 如果不是,那么使用复制构造函数可能会更安全。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM