为什么我不能使用继承类的Shapes
类?
我需要Rectangle
用一些方法扩展类,但我想以与使用 a 相同的方式使用此类,我该Shape
怎么办?
您可以编写一个派生自Shape
. 您不能编写派生自 的类Rectangle
,因为它是密封的。
正如乔恩指出的那样,矩形是密封的。
根据您要执行的操作,有几个选项是:
您可以使用自己的包含 Rectangle 的类来扩展 Shape,并通过组合来增强功能。这些对象不会被视为“是”检查中的矩形。
您可以为 Rectangle 编写扩展方法,然后您可以在任何 Rectangle 上使用它们。那么这些对象仍将被视为矩形。
例如
public static class RectangleExtensions {
public static bool IsSquare(this Rectangle r) {
return r.Width == r.Height;
}
}