如果只淨有類或接口像數在的Java,你很可能已經把類似
// Doesn't compile; just the idea
bool IsEqual<T>(this T a, T b, T offset)
where T: Number { // <- T can be any integer or floating point type
a = Math.Abs(a);
....
不幸的是,淨不提供這樣的界面,所以你必須實現超載版本IsEqual
:
bool IsEqual(this Double a, Double b, Double offset) {
return (Math.Abs(a - b) < offset);
}
bool IsEqual(this Single a, Single b, Single offset) {
return (Math.Abs(a - b) < offset);
}
bool IsEqual(this long a, long b, long offset) {
return (Math.Abs(a - b) < offset);
}
bool IsEqual(this int a, int b, int offset) {
return (Math.Abs(a - b) < offset);
}
...
這不起作用? – ReeCube
你不能。您需要爲Math.Abs實際支持的類型(或您想要使用的類型的較小子集)提供一組重載代碼和一些非常重複的代碼。 –
@ReeCube不,它不會 –