Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo Tuple<T1, T2>.IStructuralComparable.CompareTo (Object, IComparer)

 

Data di pubblicazione: ottobre 2016

Confronta l'oggetto Tuple<T1, T2> oggetto a un oggetto specificato utilizzando un operatore di confronto specificato e restituisce un intero che indica se l'oggetto corrente è precedente, successiva o nella stessa posizione dell'oggetto specificato nell'ordinamento.

Spazio dei nomi:   System
Assembly:  mscorlib (in mscorlib.dll)

int IStructuralComparable.CompareTo(
	object other,
	IComparer comparer
)

Parametri

other
Type: System.Object

Oggetto da confrontare con l'istanza corrente.

comparer
Type: System.Collections.IComparer

Oggetto che fornisce regole personalizzate per il confronto.

Valore restituito

Type: System.Int32

Intero con segno che indica la posizione relativa di questa istanza e other nella sequenza di ordinamento, come illustrato nella tabella seguente.

Valore

Descrizione

Intero negativo

Questa istanza precede other.

Zero

Questa istanza e other hanno la stessa posizione nell'ordinamento.

Intero positivo

L'istanza segue other.

Exception Condition
ArgumentException

other non è un oggetto Tuple<T1, T2>.

Questo membro è un'implementazione esplicita di un membro di interfaccia. e può essere utilizzato solo quando si esegue il cast dell'istanza di Tuple<T1, T2> su un'interfaccia IStructuralComparable.

Sebbene questo metodo può essere chiamato direttamente, viene chiamato più di frequente dalla raccolta che includono metodi di ordinamento IComparer parametri per ordinare i membri di una raccolta., ad esempio, viene chiamato Array.Sort(Array, IComparer) (metodo) e Add metodo di un SortedList oggetto che viene creata un'istanza utilizzando il SortedList.SortedList(IComparer) costruttore.

System_CAPS_cautionAttenzione

Il IStructuralComparable.CompareTo metodo è destinato all'utilizzo nelle operazioni di ordinamento. E non deve essere utilizzato quando lo scopo principale di un confronto per determinare se due oggetti sono uguali. Per determinare se due oggetti sono uguali, chiamare il IStructuralEquatable.Equals metodo.

Nell'esempio seguente viene creata una matrice di Tuple<T1, T2> gli oggetti che sono costituiti da un nome e dal punteggio dell'esame. Visualizza il componente di ogni tupla nella matrice in ordine casuale, Ordina la matrice e quindi chiama ToString per visualizzare il valore di ogni tupla in base all'ordine. Per ordinare la matrice, l'esempio definisce un oggetto generico ScoreComparer classe che implementa il IComparer interfaccia e gli ordinamenti di Tuple<T1, T2> gli oggetti in ordine crescente per il valore del secondo componente anziché del primo componente. Si noti che nell'esempio viene chiamato direttamente il IStructuralComparable.CompareTo metodo. Questo metodo viene chiamato in modo implicito per il Array.Sort(Array, IComparer) metodo per ogni elemento nella matrice.

using System;
using System.Collections;
using System.Collections.Generic;

public class ScoreComparer<T1, T2> : IComparer
{
   public int Compare(object x, object y)
   {
      Tuple<T1, T2> tX = x as Tuple<T1,T2>;
      if (tX == null)
      { 
         return 0;
      }   
      else
      {
         Tuple<T1, T2> tY = y as Tuple<T1, T2>;
         return Comparer<T2>.Default.Compare(tX.Item2, tY.Item2);             
      }
   }
}

public class Example
{
   public static void Main()
   {
      Tuple<string, Nullable<int>>[] scores = 
                    { new Tuple<string, Nullable<int>>("Jack", 78),
                      new Tuple<string, Nullable<int>>("Abbey", 92), 
                      new Tuple<string, Nullable<int>>("Dave", 88),
                      new Tuple<string, Nullable<int>>("Sam", 91), 
                      new Tuple<string, Nullable<int>>("Ed", null),
                      new Tuple<string, Nullable<int>>("Penelope", 82),
                      new Tuple<string, Nullable<int>>("Linda", 99),
                      new Tuple<string, Nullable<int>>("Judith", 84) };

      Console.WriteLine("The values in unsorted order:");
      foreach (var score in scores)
         Console.WriteLine(score.ToString());

      Console.WriteLine();

      Array.Sort(scores, new ScoreComparer<string, Nullable<int>>());

      Console.WriteLine("The values in sorted order:");
      foreach (var score in scores)
         Console.WriteLine(score.ToString());
   }
}
// The example displays the following output;
//       The values in unsorted order:
//       (Jack, 78)
//       (Abbey, 92)
//       (Dave, 88)
//       (Sam, 91)
//       (Ed, )
//       (Penelope, 82)
//       (Linda, 99)
//       (Judith, 84)
//       
//       The values in sorted order:
//       (Ed, )
//       (Jack, 78)
//       (Penelope, 82)
//       (Judith, 84)
//       (Dave, 88)
//       (Sam, 91)
//       (Abbey, 92)
//       (Linda, 99)

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 4.0
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 4.0
Windows Phone Silverlight
Disponibile da 8.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: