對於第一種方法,該類型的兩個參數必須是相同的,例如,int
和int
。該類型必須實現IComparable
接口。
對於第二種方法,這兩個參數可以有不同的類型。兩種類型都必須實現IComparable
接口,但不必是相同的,例如int
和string
。
請注意,如果IComparable.CompareTo method類型不相同,則可能會引發異常。所以最好確保類型實際上是。您可以通過使用第一種方法來做到這一點,或者使用通用的IComparable<T> interface更好。
後續問題當然是:這兩種方法有什麼區別?
第一:
public static int Foo<T1, T2>(T1 first, T2 second) where T1 : IComparable<T2>
{
return first.CompareTo(second);
}
第二:
public static int Foo<T>(IComparable<T> first, T second)
{
return first.CompareTo(second)
}
回答:第一種方法不框中的第一個參數,而第二種方法一樣。
來源
2013-01-21 10:48:40
dtb
它不是那個帖子的完全重複,因爲這裏我們有兩個參數,它改變了一些標準。看看第一個答案,看看有什麼不同 –