//数値でソートする
//IComparable<T>インターフェイスのCompareToメソッドを
//実装し、数値(Student型のno変数)で比較した結果を
//Int32型で返す
using System;
using System.Collections.Generic;
using System.Text;
class Student : IComparable<Student>
{
private Int32 no;
private String name;
public Student(Int32 no, String name)
{
this.no = no;
this.name = name;
}
public Int32 No
{
get { return no; }
}
public String Name
{
get { return name; }
}
public Int32 CompareTo(Student student)
{
if (this.no < student.no)
{
return -1;
}
else if (this.no > student.no)
{
return 1;
}
else
{
return 0;
}
}
public override String ToString()
{
return String.Format("No:{0}, Name:{1}", no, name);
}
}
class Program
{
static void Main(string[] args)
{
List<Student> l = new List<Student>();
Random rand = new Random();
for (Int32 i = 0; i < 10; i++)
{
Int32 no = rand.Next() % 1000;
l.Add(new Student(no, "Name" + no));
}
l.Sort();
l.ForEach(Console.WriteLine);
}
}
実行結果
No:6, Name:Name6
No:120, Name:Name120
No:209, Name:Name209
No:226, Name:Name226
No:349, Name:Name349
No:366, Name:Name366
No:497, Name:Name497
No:518, Name:Name518
No:876, Name:Name876
No:938, Name:Name938
//文字列でソートする
//IComparable<T>インターフェイスのCompareToメソッドを
//実装し、文字列(Student型のname変数)で比較した結果を
//Int32型で返す
using System;
using System.Collections.Generic;
using System.Text;
class Student : IComparable<Student>
{
private Int32 no;
private String name;
public Student(Int32 no, String name)
{
this.no = no;
this.name = name;
}
public Int32 No
{
get { return no; }
}
public String Name
{
get { return name; }
}
public Int32 CompareTo(Student student)
{
return this.name.CompareTo(student.name);
}
public override String ToString()
{
return String.Format("No:{0}, Name:{1}", no, name);
}
}
class Program
{
static void Main(string[] args)
{
List<Student> l = new List<Student>();
Random rand = new Random();
for (Int32 i = 0; i < 10; i++)
{
Int32 no = rand.Next() % 1000;
l.Add(new Student(no, "Name" + no));
}
l.Sort();
l.ForEach(Console.WriteLine);
}
}
実行結果
No:187, Name:Name187
No:28, Name:Name28
No:300, Name:Name300
No:429, Name:Name429
No:509, Name:Name509
No:76, Name:Name76
No:760, Name:Name760
No:8, Name:Name8
No:940, Name:Name940
No:993, Name:Name993