我正在寫一個具有不同精度級別的結構的庫,例如具有整數座標的點和具有浮點座標的點。 .NET使用Point
作爲其整體結構,而PointF
作爲浮點型變體,但我最近偶然發現了Java的等價物,它使用Point
和嵌套的Point.Double
。我應該在層次結構中構造具有不同精度級別的類型嗎?
我喜歡定義這樣類型的想法:
struct Point {
// integral implementation
public struct Double {
// double floating-point implementation
}
public struct Long {
// 64-bit implementation
}
// etc..
}
我不喜歡的是重新定義「雙」和「龍」父類型中。有沒有人使用過這種模式,並發現由此產生的更多問題?或者我應該堅持與Point
,PointD
,& PointL
?
只是不言自明的,你不能從結構繼承,所以你*有*到採取MS方法。 – tcarvin
@tcarvin - 糟糕,我的意思是嵌套類,而不是子類。發佈的示例代碼*在C#中是有效的。 – dlras2
如果這是一個結構或一個類,它們之間有很大的區別。你的代碼示例是一個結構體,因此當用戶有一個類型爲Point的變量時,* Both * Point.Double和Point.Long都存在(佔用內存)。至少在課堂上你可以防止這種情況發生。 – tcarvin