C# 入門 & 実践 / C sharp
4-11. [ ジェネリック/コレクション ] 5. IComparable インターフェイスの実装!独自のクラスをSort!
IComparable を実装して
CompareTo メソッドを実装することにより、そのクラスは、ListなどSortメソッドを持つクラスに入れたときにソートできるようになります!
IComparable を実装して、public int CompareTo(BbNumber other)の中に
背番号の大小比較結果を返す部分を書くだけです!^-^。
class BbNumber : IComparable<BbNumber>
{
private string name = "";
private int number = 0;
public BbNumber(string name, int number)
{
this.name = name;
this.number = number;
}
public void Print()
{
Console.WriteLine("{0} : {1}",number,name);
}
public int Number
{
get
{
return number;
}
}
#region IComparable<BbNumber> メンバ
public int CompareTo(BbNumber other)
{
return number - other.Number;
}
#endregion
}
class Tester
{
static void Main()
{
List<BbNumber> bblist = new List<BbNumber>();
// マンチェスターユナイテッドの選手・背番号・並べ替え^-^。
bblist.Add(new BbNumber("Rooney" , 8));
bblist.Add(new BbNumber("Saha" , 10));
bblist.Add(new BbNumber("Ronaldo" , 7));
bblist.Add(new BbNumber("Neville" , 2));
bblist.Add(new BbNumber("Ferdinand" , 5));
bblist.Add(new BbNumber("Van der Sar", 1));
// ソート前の並び
Console.WriteLine(" + ソート前 +++");
foreach (BbNumber bx in bblist)
{
bx.Print();
}
bblist.Sort();
// ソート後の並び
Console.WriteLine(" + ソート後 +++" );
foreach (BbNumber bx in bblist)
{
bx.Print();
}
bblist.Reverse();
// リバース後の並び
Console.WriteLine(" + リバース後 +++");
foreach (BbNumber bx in bblist)
{
bx.Print();
}
}
}
+ ソート前 +++
8 : Rooney
10 : Saha
7 : Ronaldo
2 : Neville
5 : Ferdinand
1 : Van der Sar
+ ソート後 +++
1 : Van der Sar
2 : Neville
5 : Ferdinand
7 : Ronaldo
8 : Rooney
10 : Saha
+ リバース後 +++
10 : Saha
8 : Rooney
7 : Ronaldo
5 : Ferdinand
2 : Neville
1 : Van der Sar
見事!背番号順に並びましたね^-^。
4-10. [ ジェネリック/コレクション ] 4. List<T> の使用 «
4. C# 入門 Level 2 »
4-12. [ ジェネリック/コレクション ] 6. Queue / Stack クラスを使う。
C# 入門 & 実践 / C sharp