为什么我不能使用继承Shapes
class?
我需要使用某些方法扩展Rectangle
类,但我想以与使用Shape
相同的方式使用此类,我该怎么办?
答案 0 :(得分:6)
你可以编写一个派生自Shape
的类。你不能编写一个派生自Rectangle
的类,因为那是密封的。
答案 1 :(得分:5)
Jon指出,Rectangle是密封的。
根据您的目的,有两个选项:
您可以使用自己的包含Rectangle的类扩展Shape,并通过合成扩充功能。这些对象不会被视为“是”检查中的矩形。
您可以为Rectangle编写扩展方法,然后可以在任何Rectangle上使用它们。然后,对象仍将被视为矩形。
e.g。
public static class RectangleExtensions {
public static bool IsSquare(this Rectangle r) {
return r.Width == r.Height;
}
}