【发布时间】:2012-04-23 03:25:33
【问题描述】:
我正在通过继承我自己的 Point 类来编写自己的 Vector 类。我在 Point 类中称为 x、y 和 z 的字段我想在 Vector 类中称为 i、j 和 k。相同的私有双变量支持属性。
我使用的方法是在 Vector 类中将 x、y 和 z 声明为私有,并将 i、j 和 k 设置为公共,但使用相同的 get/setter,如下所示:
这行得通吗,还是我让自己心痛?
public class ptsVector : ptsPoint
{
private double x { get { return x_; } set { x_ = value; } }
private double y { get { return y_; } set { y_ = value; } }
private double z { get { return z_; } set { z_ = value; } }
public double i { get { return x_; } set { x_ = value; } }
public double j { get { return y_; } set { y_ = value; } }
public double k { get { return z_; } set { z_ = value; } }
// methods elided for clarity
}
请注意,Point 类将 x_、y_ 和 z_ 作为受保护的双精度对象。
【问题讨论】:
-
在技术上可以正常工作,但有点令人困惑。如果我正在开发和使用这个类,我会因为有 2 个属性设置器设置相同的变量而感到沮丧。
-
是否有另一种(首选)方式为属性名称取别名?
-
你为什么要重新发明轮子?
-
个人而言,如果您想要同一事物的 2 个名称,请将它们都设为 getter 并创建一个方法来设置与任一名称不紧密耦合的值,即创建一个 DefineVector(x,y,z)什么的。
-
@lukas:我不确定你在说什么。 msdn.microsoft.com/en-us/library/system.windows.vector.aspx 是一个二维向量。我需要一个 3d 矢量。
标签: c# design-patterns inheritance properties polymorphism