現在我們有兩個結構來表示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 *那樣),所以,唉,泛型不會有幫助。 –