エクスポート (0) 印刷
すべて展開
展開 最小化

Comparison<T> デリゲート

更新 : 2007 年 11 月

同じ型の 2 つのオブジェクトを比較するメソッドを表します。

名前空間 :  System
アセンブリ :  mscorlib (mscorlib.dll 内)

public delegate int Comparison<T>(
	T x,
	T y
)

J# では、ジェネリック API は使用できますが、新規に宣言することはできません。
JScript では、ジェネリックな型またはメソッドは使用できません。

型パラメータ

T

比較するオブジェクトの型。

パラメータ

x
型 : T
比較対象の第 1 オブジェクト。
y
型 : T
比較対象の第 2 オブジェクト。

戻り値

型 : System.Int32

条件

0 より小さい。

xy より小さい。

0

xy は等しい。

0 より大きい。

xy より大きい値です。

このデリゲートは、Array クラスの Sort<T>(T[], Comparison<T>) メソッドのオーバーロード、および List<T> クラスの Sort(Comparison<T>) メソッドのオーバーロードで、配列またはリストの要素を並べ替えるために使用されます。

Sort(Comparison<T>) メソッド オーバーロードで Comparison<T> デリゲートを使用する方法を示すコード例を次に示します。

このコード例は、CompareDinosByLength という名前の文字列の代替比較メソッドを定義しています。このメソッドは次のように動作します。最初に、比較対象値が null であるかがテストされ、null 参照は null 以外の値よりも小さなものとして扱われます。2 番目に、文字列長が比較され、より長い文字列は、より大きなものと判断されます。3 番目に、長さが等しい場合は、通常の文字列比較が使用されます。

文字列の List<T> が作成され、4 つの文字列が不特定の順序で設定されます。リストには、空の文字列および null 参照も含まれます。このリストが表示され、CompareDinosByLength メソッドを表す Comparison<T> 汎用デリゲートを使用してソートされ、再度表示されます。

using System;
using System.Collections.Generic;

public class Example
{
    private static int CompareDinosByLength(string x, string y)
    {
        if (x == null)
        {
            if (y == null)
            {
                // If x is null and y is null, they're
                // equal. 
                return 0;
            }
            else
            {
                // If x is null and y is not null, y
                // is greater. 
                return -1;
            }
        }
        else
        {
            // If x is not null...
            //
            if (y == null)
                // ...and y is null, x is greater.
            {
                return 1;
            }
            else
            {
                // ...and y is not null, compare the 
                // lengths of the two strings.
                //
                int retval = x.Length.CompareTo(y.Length);

                if (retval != 0)
                {
                    // If the strings are not of equal length,
                    // the longer string is greater.
                    //
                    return retval;
                }
                else
                {
                    // If the strings are of equal length,
                    // sort them with ordinary string comparison.
                    //
                    return x.CompareTo(y);
                }
            }
        }
    }

    public static void Main()
    {
        List<string> dinosaurs = new List<string>();
        dinosaurs.Add("Pachycephalosaurus");
        dinosaurs.Add("Amargasaurus");
        dinosaurs.Add("");
        dinosaurs.Add(null);
        dinosaurs.Add("Mamenchisaurus");
        dinosaurs.Add("Deinonychus");
        Display(dinosaurs);

        Console.WriteLine("\nSort with generic Comparison<string> delegate:");
        dinosaurs.Sort(CompareDinosByLength);
        Display(dinosaurs);

    }

    private static void Display(List<string> list)
    {
        Console.WriteLine();
        foreach( string s in list )
        {
            if (s == null)
                Console.WriteLine("(null)");
            else
                Console.WriteLine("\"{0}\"", s);
        }
    }
}

/* This code example produces the following output:

"Pachycephalosaurus"
"Amargasaurus"
""
(null)
"Mamenchisaurus"
"Deinonychus"

Sort with generic Comparison<string> delegate:

(null)
""
"Deinonychus"
"Amargasaurus"
"Mamenchisaurus"
"Pachycephalosaurus"
 */


Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC, Xbox 360

.NET Framework および .NET Compact Framework では、各プラットフォームのすべてのバージョンはサポートしていません。サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。

.NET Framework

サポート対象 : 3.5、3.0、2.0

.NET Compact Framework

サポート対象 : 3.5、2.0

XNA Framework

サポート対象 : 2.0、1.0

コミュニティの追加

追加
表示:
© 2014 Microsoft