![](/img/trans.png)
[英]Does not implement interface member 'System.Icomparable.CompareTo(object)'?
[英]Does not implement System.IComparable.CompareTo(object)
錯誤1'Koordinates.Vieta'沒有實現接口成員'System.IComparable.CompareTo(object)'
編碼:
public class Vieta : IComparable //error is thrown here, on "Vieta"
{
public double x, y;
//constructor
public Vieta(double a, double b)
{
x = a; y = b;
}
//read only parameter
public double ilgis
{
get
{
return Math.Sqrt(x * x + y * y);
}
}
public int CompareTo(Vieta other)
{
if (other == null) return 1;
return other.ilgis.CompareTo(this.ilgis);
}
}
你有一個比較方法,它采用了Vieta
類的一個實例。 IComparable
接口聲明了一個方法CompareTo(object)
(注意參數應該是object
類型)。
擁有強類型的CompareTo方法更好。 您也可以實現IComparable<T>
接口。
我的建議是這樣做,並明確地實現IComparable
接口。 那么,你最終會得到這樣的東西:
public class Vieta : IComparable, IComparable<Vieta>
{
IComparable.CompareTo( object obj )
{
var other = obj as Vieta;
if( other == null ) return false;
return CompareTo(other);
}
public int CompareTo( Vieta other )
{
// Implement your compare logic here.
}
}
通過顯式實現IComparable
接口,將從智能感知中隱藏CompareTo(object)
方法。 實際上,如果將類強制轉換為接口類型(或者將該類的實例傳遞給采用IComparable
參數的方法),則只能調用該方法。
將類更改為:
public class Vieta : IComparable<Vieta>
IComparable
定義了一個int CompareTo(object)
而通用IComparable<T>
定義了一個int CompareTo(T)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.