C# 中的自定义系列结构



我定义了这样的结构,用于存储 Line 的 X1、Y1、X2、Y2 值,我想知道 C# 中是否有类似的结构,我在这里重新发明轮子吗?

public struct _2DLine
{
    public double X1 { get; set; }
    public double Y1 { get; set; }
    public double X2 { get; set; }
    public double Y2 { get; set; }
}

更新:我不想画一条线,我只想存储端点。

您可以使用System.Drawing.Point作为生产线的组件。

public struct _2DLine
{
    public Point Point1 { get; set; }
    public Point Point2 { get; set; }
}

您可以使用此命名空间 System.Windows.Shapes.Line 绘制线条。

该类型非常简单,除非您要将实例传递给接受某些特定结构类型的东西(在这种情况下,您应该使用它),否则最好定义自己的类型,而不是引入对某些模糊类型的依赖。 请注意,在结构中,公共字段优于公共可变属性。 如果成分本身是结构,这是双重正确的,就像你使用两个System.Drawing.Point一样(正如Menelaos Vergis所建议的那样,如果你将坐标传递给接受该类型的方法,这是一个非常合理的主张)。

使用公共字段而不是属性将可以像myLine.Start.X += 23;一样执行计算,而不必说myLine.Start = new Point(myLine.Start.X+23, myLine.Start.Y);。 尽管一些认为一切都应该表现为类对象的人更喜欢后一种语法,但我认为使用前者的能力是使用字段的一个有价值的优势。 请注意,对于类对象,属性比字段具有一些真正的优势,但这些优势几乎都不适用于结构,并且它们通常不会超过通过使用字段实现的更方便的更新。

最新更新