C# 创建具有颜色、大小和位置的类?
我正在创建一个类,它只是一个带有颜色的矩形。C# 创建具有颜色、大小和位置的类?,c#,class,graphics,shapes,C#,Class,Graphics,Shapes,我正在创建一个类,它只是一个带有颜色的矩形。 由于System.Drawing.Rectangle是密封类型,我无法执行以下操作: class Block : Rectangle { public Color Color { get; set; } public Block() { } } 这正是我需要的 那么,有没有办法得到类似的结果呢? 以下是我考虑过的几个选项: class Block { public Color Color { get; set; }
由于
System.Drawing.Rectangle
是密封类型,我无法执行以下操作:
class Block : Rectangle
{
public Color Color { get; set; }
public Block() { }
}
这正是我需要的
那么,有没有办法得到类似的结果呢? 以下是我考虑过的几个选项:
class Block
{
public Color Color { get; set; }
public Rectangle Shape { get; set; }
public Block() { }
}
class Block
{
public Color Color { get; set; }
public Size Size { get; set; }
public Point Location { get; set; }
public Block() { }
}
然而,我不能做像Block.X之类的事情,而且“重新实现”矩形感觉很愚蠢。有更好的解决方案吗?不是说
Rectangle
是一个密封类,因为Rectangle
根本不是一个类。它是一个结构:)。在C#中,不能从结构继承。这就是为什么您必须将其重新实现为一个类或找到一个类似的类。我选择基本形状作为基类。输入基类中所有形状的共同点:
public abstract class ShapeBase
{
public Point Coordinates {get; set;}
public Color Color {get; set;}
}
然后从中得出:
public class Rectangle : ShapeBase
{
public int Width {get; set;}
public int Height {get; set;}
}
public class Block : Rectangle
{
public Size Size {get; set;}
}
或者你对不同形状的要求 简单的回答是,您的自定义类型将拥有您需要跟踪的所有数据,然后它将以整洁的方式将其暴露给代码的其余部分。这是无法回答的-所有答案都将基于意见。您可以采取多种方法,但没有一种方法优于它。
System.Drawing.Rectangle
不是密封的,它是一种值类型(struct),因此它不可继承(通过类或结构)。您所拥有的任何一种方法都是好的,都可以达到它的目的。@RonBeyer错误1'MyGame.Block':无法派生自密封类型'System.Drawing.矩形'F:\Skamah1\documents\visual studio 2013\Projects\MyGame\MyGame\Block.cs 5 11 MyGame
@RonBeyer我从来没有说过它是密封类,我说过它是密封类型。下面是我得到的错误:error 1'MyGame.Block':无法从密封类型'System.Drawing.Rectangle'F:\Skamah1\documents\visualstudio 2013\Projects\MyGame\MyGame\Block.cs 5 11 MyGame
@SkamahOne抱歉,我误读了这个问题,但这并没有改变什么。您无法从结构中删除它,因此没有nice
方法