基本上,我有以下幾點:泛型約束 - 我不知道如何解決這種情況有兩種/或情況
public static bool IsBetween<T>(this T value, T a, T b)
where T : IComparable
{
...
}
public static bool IsBetween<T>(this T value, T a, T b)
where T : IComparable<T>
{
...
}
的問題是,我不能這樣做,因爲你不能即使約束條件不同,也會有相同簽名的成員。但是,沒有辦法說約束是IComparable
或IComparable<T>
。所以,我不確定在這之外做什麼,只是選擇一個並隨它而行。而且,無論選擇哪一個,我都會因爲分開而不相互繼承(這是有道理的)而失去另一個。
我在這裏丟失了什麼,有沒有辦法使用兩者,或者我將不得不選擇一個(可能是通用版本)?
我從來沒有真的這樣想過。我想這是因爲我開始使用通用版本,然後複製/粘貼它並試圖快速更改。 – 2012-02-18 18:16:40
此外,默認情況下會先選擇「IComparable」選項,然後選擇「IComparable」選項? –
2012-02-18 22:10:28
@ m-y:重載分辨率將選擇*更具體的*方法。如果沒有辦法確定哪一個更具體,那麼你會得到一個模糊性錯誤。 – 2012-02-18 23:28:45