1. ホーム
  2. c#

[解決済み] IComparableインターフェイスの実装方法

2023-06-11 13:58:45

質問

あるクラスのインスタンスを配列に格納しています。

BankAccount[] a;
. . .

a = new BankAccount[]
{
    new BankAccount("George Smith", 500m),
    new BankAccount("Sid Zimmerman", 300m)
};

この配列に値を入れたら、残高でソートしたいと思います。そのためには、各要素がソート可能であるかどうかを IComparable .

私は、これをインターフェイスを使って行う必要があります。今のところ、私は次のようなコードを持っています。

public interface IComparable
{
    decimal CompareTo(BankAccount obj);
}

しかし、これが正しい解決策なのかどうかわかりません。 何かアドバイスがあればお願いします。

どのように解決するのですか?

を定義してはいけません。 IComparable を自分で定義してはいけません。それはすでに定義されています。むしろ、あなたは を実装する必要があります。 IComparable あなたの BankAccount クラスに追加します。

を定義したところで class BankAccount を実装していることを確認してください。 IComparable インターフェースを実装していることを確認してください。次に BankAccount.CompareTo と書いて、2つのオブジェクトの残高を比較します。

public class BankAccount : IComparable<BankAccount>
{
    [...]

    public int CompareTo(BankAccount that)
    {
        if (this.Balance <  that.Balance) return -1;
        if (this.Balance == that.Balance) return 0;
        return 1;
    }
}


編集 をクリックすると、コメントからJeffrey L Whitledgeの解答が表示されます。

public class BankAccount : IComparable<BankAccount>
{
    [...]

    public int CompareTo(BankAccount that)
    {
        return this.Balance.CompareTo(that.Balance);
    }
}