ソートを行うコードをいろいろ書いてみる。
まずは外部定義でソート条件を記述するタイプ。
class SampleSortable : IComparer<string> { public int Compare(string x, string y) { return x.Length > y.Length ? 1 : -1; } } class Program { static void Main(string[] args) { string[] dataSets = {"someone", "else", "something wrong" }; SampleSortable sorter = (new SampleSortable()); Array.Sort<string>(dataSets, sorter); Array.ForEach<string>( dataSets, delegate(string val) { Console.WriteLine("Elem : " + val); }); Console.ReadLine(); } }
次は、自身がソート可能な場合。
class SampleCompareable : IComparable<SampleCompareable> { public string message { get; set; } public override string ToString() { return this.message; } public int CompareTo(SampleCompareable other) { return this.message.Length - other.message.Length; } } class Program { static void Main(string[] args) { SampleCompareable[] sortTarget = { new SampleCompareable() { message="someone" }, new SampleCompareable() { message="else" }, new SampleCompareable() { message="something" } }; Array.Sort<SampleCompareable>(sortTarget); Array.ForEach<SampleCompareable>( sortTarget, delegate(SampleCompareable val) { Console.WriteLine("Elem : " + val); }); Console.ReadLine(); } }