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, T3, T4, T5>.IStructuralComparable.CompareTo (Object, IComparer)

 

Data di pubblicazione: novembre 2016

Confronta l'oggetto corrente Tuple<T1, T2, T3, T4, T5> 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 di other nell'ordinamento, come illustrato nella tabella seguente.

Valore

Descrizione

Intero negativo

Questa istanza precede other.

Zero

Questa istanza si trova nella stessa posizione di other nell'ordinamento.

Intero positivo

L'istanza segue other.

Exception Condition
ArgumentException

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

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, T3, T4, T5> su un'interfaccia IStructuralComparable.

Anche se questo metodo può essere chiamato direttamente, viene chiamato più di frequente quando si ordinano raccolta metodi che includono 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(Object, IEqualityComparer) metodo.

L'esempio seguente crea una matrice di Tuple<T1, T2, T3, T4, T5> oggetti che contengono dati statistici di opportunità di carriera dei running back nel football americano professionista. Componenti della tupla 5 sono costituiti da nome del lettore, il numero di partite giocate, il numero di passaggi o tentativi, il numero totale di cubi acquisita, e il numero di touchdown con punteggi. Nell'esempio vengono visualizzati i componenti di ogni tupla nella matrice in ordine casuale, Ordina la matrice e quindi chiama ToString per visualizzare ogni tupla in base all'ordinamento. Per ordinare la matrice, l'esempio definisce un oggetto generico YardsGained classe che implementa il IComparer interfaccia e gli ordinamenti di Tuple<T1, T2, T3, T4, T5> gli oggetti in ordine decrescente, dal valore del quarto componente (cubi acquisite) anziché del primo componente. Si noti che nell'esempio viene chiamato direttamente il IStructuralComparable.CompareTo metodo. Questo metodo viene chiamato in modo implicito dal Array.Sort(Array, IComparer) metodo per ogni elemento nella matrice.

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

public class YardsGained<T1, T2, T3, T4, T5> : IComparer
{
   public int Compare(object x, object y)
   {
      Tuple<T1, T2, T3, T4, T5> tX = x as Tuple<T1, T2, T3, T4, T5>;
      if (tX == null)
      { 
         return 0;
      }   
      else
      {
         Tuple<T1, T2, T3, T4, T5> tY = y as Tuple<T1, T2, T3, T4, T5>;
         return -1 * Comparer<T4>.Default.Compare(tX.Item4, tY.Item4);             
      }
   }
}

public class Example
{
   public static void Main()
   {
      // Organization of runningBacks 5-tuple:
      //    Component 1: Player name
      //    Component 2: Number of games played
      //    Component 3: Number of attempts (carries)
      //    Component 4: Number of yards gained 
      //    Component 5: Number of touchdowns   
      Tuple<string, int, int, int, int>[] runningBacks =
           { Tuple.Create("Payton, Walter", 190, 3838, 16726, 110),  
             Tuple.Create("Sanders, Barry", 153, 3062, 15269, 99),            
             Tuple.Create("Brown, Jim", 118, 2359, 12312, 106),            
             Tuple.Create("Dickerson, Eric", 144, 2996, 13259, 90),            
             Tuple.Create("Faulk, Marshall", 176, 2836, 12279, 100) }; 

      // Display the array in unsorted order.
      Console.WriteLine("The values in unsorted order:");
      foreach (var runningBack in runningBacks)
         Console.WriteLine(runningBack.ToString());
      Console.WriteLine();

      // Sort the array
      Array.Sort(runningBacks, new YardsGained<string, int, int, int, int>());

      // Display the array in sorted order.
      Console.WriteLine("The values in sorted order:");
      foreach (var runningBack in runningBacks)
         Console.WriteLine(runningBack.ToString());
   }
}
// The example displays the following output:
//       The values in unsorted order:
//       (Payton, Walter, 190, 3838, 16726, 110)
//       (Sanders, Barry, 153, 3062, 15269, 99)
//       (Brown, Jim, 118, 2359, 12312, 106)
//       (Dickerson, Eric, 144, 2996, 13259, 90)
//       (Faulk, Marshall, 176, 2836, 12279, 100)
//       
//       The values in sorted order:
//       (Brown, Jim, 118, 2359, 12312, 106)
//       (Dickerson, Eric, 144, 2996, 13259, 90)
//       (Faulk, Marshall, 176, 2836, 12279, 100)
//       (Payton, Walter, 190, 3838, 16726, 110)
//       (Sanders, Barry, 153, 3062, 15269, 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: