[英]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.