4

IComparable使用からに変更しましたIComparable<Artist>が、エラーが発生します

「RecordCollection.Artist」はインターフェイスメンバー「System.IComparable.CompareTo(object)」を実装していません

class Artist : IComparable<Artist>

CompareToメソッドを追加しました。

このエラーが何を意味するのかわからないので、なぜこれが発生するのかを説明する助けがあれば素晴らしいでしょう。

class Artist : IComparable<Artist>
{
    private String Name;
    private int NoMem;

    public Artist(string Name, int NoMem)
    {
        this.Name = Name;
        this.NoMem = NoMem; 
    }

 public int CompareTo(Artist other)
    {
        if (other == null) return 1;
        else
            return 0;
    }
}

新しいアーティストのAVLツリー

        AVLTree<Artist> treeAVL = new AVLTree<Artist>();
4

3 に答える 3

3

定義するプロジェクトがArtistエラーなしでコンパイルされることを確認する必要があります。そうしないと、他のプロジェクトが変更を取得せず、代わりにArtist実装すると考えます。コンパイル時エラーが発生するのはそのときです。IComparableIComparable<T>

「RecordCollection.Artist」はインターフェイスメンバー「System.IComparable.CompareTo(object)」を実装していません

技術的にも実装する必要はなくCompareTo(object)、問題は解決しません。

于 2013-03-15T12:38:18.703 に答える
1

そのエラーをコピーして貼り付けた場合は、次のように実装する必要があるようですCompareTo

public int CompareTo(object other)
{
    if (other == null) return 1;
        else
    return 0;
}
于 2013-03-15T12:34:05.577 に答える
1

メッセージ:

「RecordCollection.Artist」はインターフェイスメンバー「System.IComparable.CompareTo(object)」を実装していません

IComparableあなたのクラスがまだどこかに実装していると宣言していると考えていることを明確に述べています。あなたはそれを探したいかもしれません(それは経由で別のファイルにあるかもしれませんpartial class)。ただし、個人的には、型指定されていないサポートを含めるのは正しいと思います。私は単に追加します:

int IComparable.CompareTo(object obj)
{
    return CompareTo(obj as Artist);
}
于 2013-03-15T12:34:11.497 に答える