Assembly : mscorlib (dans mscorlib.dll)
SyntaxePublic Delegate Function Comparison(Of T) ( _ x As T, _ y As T _ ) As Integer
Dim instance As New Comparison(Of T)(AddressOf HandlerMethod)
public delegate int Comparison<T> ( T x, T y )
generic<typename T> public delegate int Comparison ( T x, T y )
J# prend en charge l'utilisation de types et de méthodes génériques mais pas la déclaration de nouveaux types et de méthodes génériques.
JScript ne prend pas en charge les types et les méthodes génériques.
Paramètres de type
- T
Type des objets à comparer.
Paramètres
- x
Premier objet à comparer.
- y
Second objet à comparer.
Valeur de retour
| Valeur | Condition |
|---|---|
| Inférieure à 0 | x est inférieur au champ y. |
| 0 | x est égal à y. |
| Supérieure à 0 | x est supérieur à y. |
NotesCe délégué est utilisé par la surcharge de méthode Sort(J[],Comparison, générique) de la classe Array et la surcharge de méthode Sort(Comparison, générique) de la classe List pour trier les éléments d'un tableau ou d'une liste.
ExempleL'exemple de code suivant illustre l'utilisation du délégué Comparison avec la surcharge de méthode Sort(Comparison, générique).
L'exemple de code définit une autre méthode de comparaison des chaînes, nommée CompareDinosByLength. Cette méthode fonctionne comme suit : en premier lieu, les comparateurs sont testés pour la valeur référence Null (Nothing en Visual Basic) et une référence null est traitée comme inférieure à une valeur qui n'est pas NULL. Deuxièmement, les longueurs de chaîne sont comparées, et la plus longue chaîne est jugée supérieure. Troisièmement, si les longueurs sont égales, la comparaison de chaînes ordinaire est utilisée.
Un List de chaînes est créé et rempli avec quatre chaînes, dans aucun ordre particulier. La liste inclut également une chaîne vide et une référence null. La liste est affichée, triée à l'aide d'un délégué générique Comparison qui représente la méthode CompareDinosByLength, puis réaffichée.
Imports System Imports System.Collections.Generic Public Class Example Private Shared Function CompareDinosByLength( _ ByVal x As String, ByVal y As String) As Integer If x Is Nothing Then If y Is Nothing Then ' If x is Nothing and y is Nothing, they're ' equal. Return 0 Else ' If x is Nothing and y is not Nothing, y ' is greater. Return -1 End If Else ' If x is not Nothing... ' If y Is Nothing Then ' ...and y is Nothing, x is greater. Return 1 Else ' ...and y is not Nothing, compare the ' lengths of the two strings. ' Dim retval As Integer = _ x.Length.CompareTo(y.Length) If retval <> 0 Then ' 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) End If End If End If End Function Public Shared Sub Main() Dim dinosaurs As New List(Of String) dinosaurs.Add("Pachycephalosaurus") dinosaurs.Add("Amargasaurus") dinosaurs.Add("") dinosaurs.Add(Nothing) dinosaurs.Add("Mamenchisaurus") dinosaurs.Add("Deinonychus") Display(dinosaurs) Console.WriteLine(vbLf & "Sort with generic Comparison(Of String) delegate:") dinosaurs.Sort(AddressOf CompareDinosByLength) Display(dinosaurs) End Sub Private Shared Sub Display(ByVal lis As List(Of String)) Console.WriteLine() For Each s As String In lis If s Is Nothing Then Console.WriteLine("(Nothing)") Else Console.WriteLine("""{0}""", s) End If Next End Sub End Class ' This code example produces the following output: ' '"Pachycephalosaurus" '"Amargasaurus" '"" '(Nothing) '"Mamenchisaurus" '"Deinonychus" ' 'Sort with generic Comparison(Of String) delegate: ' '(Nothing) '"" '"Deinonychus" '"Amargasaurus" '"Mamenchisaurus" '"Pachycephalosaurus"
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" */
using namespace System; using namespace System::Collections::Generic; int CompareDinosByLength(String^ x, String^ y) { if (x == nullptr) { if (y == nullptr) { // 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 == nullptr) // ...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); } } } }; void Display(List<String^>^ list) { Console::WriteLine(); for each(String^ s in list) { if (s == nullptr) Console::WriteLine("(null)"); else Console::WriteLine("\"{0}\"", s); } }; void main() { List<String^>^ dinosaurs = gcnew List<String^>(); dinosaurs->Add("Pachycephalosaurus"); dinosaurs->Add("Amargasaurus"); dinosaurs->Add(""); dinosaurs->Add(nullptr); dinosaurs->Add("Mamenchisaurus"); dinosaurs->Add("Deinonychus"); Display(dinosaurs); Console::WriteLine("\nSort with generic Comparison<String^> delegate:"); dinosaurs->Sort( gcnew Comparison<String^>(CompareDinosByLength)); Display(dinosaurs); } /* This code example produces the following output: "Pachycephalosaurus" "Amargasaurus" "" (null) "Mamenchisaurus" "Deinonychus" Sort with generic Comparison<String^> delegate: (null) "" "Deinonychus" "Amargasaurus" "Mamenchisaurus" "Pachycephalosaurus" */
Plates-formesWindows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile pour Pocket PC, Windows Mobile pour Smartphone, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition
Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.
Informations de version
Outils (masquer)
S'enregistrer
Liste des Membres
Qui est en ligne?
FAQ