Comparer<T>.IComparer.Compare(Object, Object) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Confronta due oggetti e restituisce un valore indicante se uno è minore, uguale o maggiore dell'altro.
virtual int System.Collections.IComparer.Compare(System::Object ^ x, System::Object ^ y) = System::Collections::IComparer::Compare;
int IComparer.Compare (object x, object y);
abstract member System.Collections.IComparer.Compare : obj * obj -> int
override this.System.Collections.IComparer.Compare : obj * obj -> int
Function Compare (x As Object, y As Object) As Integer Implements IComparer.Compare
Parametri
- x
- Object
Primo oggetto da confrontare.
- y
- Object
Secondo oggetto da confrontare.
Restituisce
Intero con segno che indica i valori relativi di x
e y
, come illustrato nella tabella seguente.
Valore | Significato |
---|---|
Minore di zero | x è minore di y .
|
Zero | x è uguale a y .
|
Maggiore di zero | x è maggiore di y .
|
Implementazioni
Eccezioni
Il tipo del parametro x
o y
non consente di effettuare il cast al tipo T
.
-oppure-
I parametri x
e y
non implementano l'interfaccia generica IComparable<T> o l'interfaccia IComparable.
Esempio
Nell'esempio seguente viene illustrato come usare il IComparer.Compare metodo per confrontare due oggetti. Questo esempio fa parte di un esempio più grande fornito per la Comparer<T> classe.
// This explicit interface implementation
// compares first by the length.
// Returns -1 because the length of BoxA
// is less than the length of BoxB.
BoxLengthFirst LengthFirst = new BoxLengthFirst();
Comparer<Box> bc = (Comparer<Box>) LengthFirst;
Box BoxA = new Box(2, 6, 8);
Box BoxB = new Box(10, 12, 14);
int x = LengthFirst.Compare(BoxA, BoxB);
Console.WriteLine();
Console.WriteLine(x.ToString());
' This explicit interface implementation
' compares first by the length.
' Returns -1 because the length of BoxA
' is less than the length of BoxB.
Dim LengthFirst As New BoxLengthFirst()
Dim bc As Comparer(Of Box) = CType(LengthFirst, Comparer(Of Box))
Dim BoxA As New Box(2, 6, 8)
Dim BoxB As New Box(10, 12, 14)
Dim x As Integer = LengthFirst.Compare(BoxA, BoxB)
Console.WriteLine()
Console.WriteLine(x.ToString())
Commenti
Questo metodo è un wrapper per il Compare(T, T) metodo, quindi obj
deve essere eseguito il cast al tipo specificato dall'argomento T
generico dell'istanza corrente. Se non è possibile eseguire il cast in T
, viene generato un ArgumentException oggetto .
Il confronto null
con qualsiasi tipo di riferimento è consentito e non genera un'eccezione. Quando si ordina, null
viene considerato minore di qualsiasi altro oggetto.
Note per i chiamanti
Compare(T, T) e Equals(T, T) si comportano in modo diverso in termini di riservatezza delle impostazioni cultura e di riservatezza dei casi.
Per i confronti di stringhe, la StringComparer classe è consigliata su Comparer<String>
. Le proprietà della StringComparer classe restituiscono istanze predefinite che eseguono confronti di stringhe con combinazioni diverse di riservatezza delle impostazioni cultura e di distinzione tra maiuscole e minuscole. La distinzione tra maiuscole e minuscole e la riservatezza delle impostazioni cultura sono coerenti tra i membri della stessa StringComparer istanza.
Per altre informazioni sui confronti specifici delle impostazioni cultura, vedere lo spazio dei nomi e la globalizzazione e laSystem.Globalization localizzazione.