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 che indica 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.
Valori restituiti
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
x o y è di un tipo che non può essere eseguito il cast al tipo T.
oppure
x e y non implementano l'interfaccia IComparable<T> generica o l'interfaccia IComparable .
Esempio
Nell'esempio seguente viene illustrato come utilizzare il IComparer.Compare metodo per confrontare due oggetti. Questo esempio fa parte di un esempio più ampio 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.
let LengthFirst = BoxLengthFirst()
let bc = LengthFirst :> Comparer<Box>
let BoxA = Box(2, 6, 8)
let BoxB = Box(10, 12, 14)
let x = LengthFirst.Compare(BoxA, BoxB)
printfn $"\n{x}"
' 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 , pertanto obj deve essere eseguito il cast al tipo specificato dall'argomento generico T dell'istanza corrente. Se non può essere eseguito il cast a T, viene generata un'eccezione ArgumentException .
Il confronto null con qualsiasi tipo di riferimento è consentito e non genera un'eccezione. Durante l'ordinamento, 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 sensibilità alla cultura e di distinzione tra maiuscole e minuscole.
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 distinzione tra impostazioni cultura e distinzione tra maiuscole e minuscole. La distinzione tra maiuscole e minuscole e la distinzione 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 System.Globalizationglobalizzazione e la localizzazione.