1

IComparable を使用して ArrayList をソートするために何時間も試みています...

これを行うためにIComparerを使用できないことに注意してください。

コードは次のとおりです。

class Pays : IComparable<Pays>
{
    private string nomPays;

    public string NomPays{get{return nomPays;}set{nomPays = value;}}

    public int CompareTo(object x)
    {
        Pays myX = (Pays)x;
        return string.Compare(this.nomPays, x.nomPays);
    }
}

class TestPays
{
    public static ArrayList LireRemplirPays(){ //...blabla
        return uneListe;
    }
    static void Main(string[] args){
        ArrayList paysList = LireRemplirPays();
        paysList.Sort();          
    }
}

エラー貼り付け: System.ArgumentException: 少なくとも 1 つのオブジェクトが IComparable System.Collections.Comparer.Compare(Object a, Object b)...... を実装する必要があります。

私に何ができる ?読んでくれてありがとう

編集 :

だから私の最初の間違いは:

class Pays : IComparable<Pays>

それ以外の

class Pays : IComparable

二度目の間違い:

return nomPays.CompareTo(myX.nomPays);
4

1 に答える 1

5

の代わりに一般的なリストを使用する必要がありますArrayList

class TestPays
{
    public static List<Pays> LireRemplirPays() { //...blabla
        return uneListe; // Cast here if necessary
    }
    static void Main(string[] args) {
        List<Pays> paysList = LireRemplirPays();
        paysList.Sort();          
    }
}

ArrayListは一般的ではなく、任意のタイプのオブジェクトを含めることができ、object実装しませんIComparable

また、NomPays実際にチェックを行わない場合は、短縮形を使用でき、バッキング フィールドを明示的に宣言する必要はありません。

public string Nom { get; set; }
于 2013-04-20T19:42:38.613 に答える