![](/img/trans.png)
[英]How can I sort this array using the iComparable compareTo method?
[英]Where can I find the IComparable's CompareTo method definition?
在哪里可以找到CompareTo方法定義?
如下面的代碼所示,我可以通過實現IComparable接口來使用CompareTo方法。 但是我在Utilities類中沒有為CompareTo方法給出任何定義。 我知道這是一個非常瑣碎的問題。 但是我不理解類如何在不提供其方法實現的情況下實現接口。
public class Utilities<T> where T : IComparable
{
public T Max(T a, T b)
{
return a.CompareTo(b) > 0 ? a : b;
}
}
您的Utilities
類未實現IComparable
。 您是說T
必須實現IComparable
。 如果Utilities
要實現IComparable
,它將看起來像這樣:
public class Utilities<T> : IComparable
您無需在Utilities
定義CompareTo
方法,因為無論T
是多少,都應該在T
定義它。
例如,您不能將Foo
用於T
因為Foo
沒有實現IComparable
:
class Foo {
// you must add a CompareTo method here in order to use Foo as T
// you must also add ": IComparable"
}
但是您可以使用string
或int
或float
因為它們確實實現了IComparable
。
您使用的是通用類型約束,而不是實現IComparable
接口,這意味着T
必須從IComparable
實現。
如果要實現IComparable
接口,則需要在類名之后和where
約束關鍵字之前使用:
。
public class Utilities<T> : IComparable
where T : IComparable
{
public int CompareTo(object obj)
{
}
public T Max(T a, T b)
{
return a.CompareTo(b) > 0 ? a : b;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.