现在我们有两个结构来表示2d点。泛型或多个类
public struct Point2D
{
public double X { get; set; }
public double Y { get; set; }
}
public struct Point2DF
{
public float X { get; set; }
public float Y { get; set; }
}
现在我们需要制造另一个结构来表示二维点的整数。
public struct Point2DI
{
public int X { get; set; }
public int Y { get; set; }
}
我的问题是我应该在这里使用泛型?如果我使用泛型,我将有一个结构而不是三个。
public struct Point<T>
{
public T X { get; set; }
public T Y { get; set; }
}
但是消费者可以将T设置为字符串或某些类/结构。我该怎么办?有什么办法可以强制T是双/ int/float?
泛型不会以任何方式帮助你。你最好创建多种类型。 –
正如在其他问题中所解释的那样,您不能对C#中的数字类型进行约束。这是不可能的。你要么必须忍受那种(也许增加运行时类型检查),要么坚持使用单独的类型。 – poke
C#*没有'Numeric'类(像* Java *那样),所以,唉,泛型不会有帮助。 –