IComparable
カスタムオブジェクトにインターフェースを実装して、List.Sort()
アルファベット順にソートできるようにしようとしています。
私のオブジェクトに_name
は、文字列型であるというフィールドがあり、それに基づいてソートしたいと考えています。これが私が実装した方法です:
public int CompareTo(object obj)
{
//Int reference table:
//1 or greater means the current instance occurs after obj
//0 means both elements occur in the same position
//-1 or less means the current instance occurs before obj
if (obj == null)
return 1;
Upgrade otherUpgrade = obj as Upgrade;
if (otherUpgrade != null)
return _name.CompareTo(otherUpgrade.Name);
else
throw new ArgumentException("Passed object is not an Upgrade.");
}
私が何か間違ったことをしたのか、それとも単に文字列CompareTo
が機能するのかはわかりませんが、基本的に私のリストは次のようにソートされました:
- アップグレードのテスト
- テスト アップグレード 10
- テスト アップグレード 11
- テスト アップグレード 12
- テスト アップグレード 13
- テスト アップグレード 14
- テスト アップグレード 15
- テスト アップグレード 2
- テスト アップグレード 3
- テスト アップグレード 4
- テスト アップグレード 5
私はそれらを次のようにソートしたい:
- アップグレードのテスト
- テスト アップグレード 2
- テスト アップグレード 3
- ...等