Llegeix en anglès

Comparteix a través de


Tuple<T1>.IStructuralComparable.CompareTo(Object, IComparer) Método

Definición

Compara el objeto Tuple<T1> actual con un objeto especificado utilizando un comparador especificado y devuelve un entero que indica si el objeto actual precede o sigue al objeto especificado, o si se encuentra en la misma posición que dicho objeto en el criterio de ordenación.

C#
int IStructuralComparable.CompareTo(object other, System.Collections.IComparer comparer);

Parámetros

other
Object

Objeto que se va a comparar con la instancia actual.

comparer
IComparer

Un objeto que proporciona reglas personalizadas para la comparación.

Devoluciones

Entero con signo que indica la posición relativa de esta instancia y other en el criterio de ordenación, tal como se muestra en la tabla siguiente.

Valor Descripción
Un entero negativo Esta instancia precede a other.
Cero En el criterio de ordenación, esta instancia y other tienen la misma posición.
Un entero positivo. Esta instancia es posterior a other.

Implementaciones

Excepciones

other no es un objeto Tuple<T1>.

Ejemplos

En el ejemplo siguiente se define una clase genérica denominada DescendingComparer que implementa la IComparer<T> interfaz . DescendingComparer ordena los objetos en orden descendente en lugar de ascendente al invertir el valor devuelto por el comparador predeterminado para un tipo determinado. A continuación, se pasa una instancia de la clase genérica DescendingComparer al Array.Sort(Array, IComparer) método para ordenar una matriz de Tuple<T1> objetos en orden descendente. Tenga en cuenta que el ejemplo no llama directamente al IStructuralComparable.CompareTo método . El método llama implícitamente Array.Sort(Array, IComparer) a este método para cada elemento de la matriz.

C#
using System;
using System.Collections.Generic;

public class DescendingComparer<T> : IComparer<T>
{
    public int Compare(T x, T y) 
    {
        return -1 * Comparer<T>.Default.Compare(x, y);
    }
}

class CompareTo2
{
   static void Main()
   {
       Tuple<Double>[] values = { Tuple.Create(13.54),
                                  Tuple.Create(Double.NaN),
                                  Tuple.Create(-189.42993),
                                  Tuple.Create(Double.PositiveInfinity),
                                  Tuple.Create(Double.Epsilon),
                                  Tuple.Create(1.934E-17),
                                  Tuple.Create(Double.NegativeInfinity),
                                  Tuple.Create(-0.000000000003588),
                                  null };
       Console.WriteLine("The values in unsorted order:");
       foreach (var value in values)
           if (value != null)
               Console.WriteLine("   {0}", value.Item1);
           else
               Console.WriteLine("   <null>");
       Console.WriteLine();

       Array.Sort(values, new DescendingComparer<Tuple<Double>>());

       Console.WriteLine("The values sorted in descending order:");
       foreach (var value in values)
           if (value != null)
               Console.WriteLine("   {0}", value.Item1);
           else
               Console.WriteLine("   <null>");
    }
}
// The example displays the following output:
//      The values in unsorted order:
//         13.54
//         NaN
//         -189.42993
//         Infinity
//         4.94065645841247E-324
//         1.934E-17
//         -Infinity
//         -3.588E-12
//
//      The values sorted in descending order:
//         Infinity
//         13.54
//         1.934E-17
//         4.94065645841247E-324
//         -3.588E-12
//         -189.42993
//         -Infinity
//         NaN

Comentarios

Aunque se puede llamar directamente a este método, normalmente se llama mediante métodos de ordenación de colecciones que incluyen IComparer parámetros para ordenar los miembros de una colección. Por ejemplo, se llama mediante el Array.Sort(Array, IComparer) método y el Add método de un SortedList objeto al que se crea una instancia mediante el SortedList.SortedList(IComparer) constructor .

Atenció

El IStructuralComparable.CompareTo método está pensado para su uso en operaciones de ordenación. No se debe usar cuando el propósito principal de una comparación es determinar si dos objetos son iguales. Para determinar si dos objetos son iguales, llame al IStructuralEquatable.Equals método .

Se aplica a

Producte Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Consulte también