Compartir a través de


Comparaciones y ordenaciones en colecciones

Actualización: noviembre 2007

Las clases System.Collections realizan comparaciones en casi todos los procesos implicados en la administración de colecciones, bien al buscar el elemento que se debe quitar o al devolver el valor de un par de clave y valor.

Se utilizan dos constructores para las comparaciones. El método Equals, heredado o derivado de Object, simplemente devuelve un valor booleano para indicar si dos objetos son iguales. El método IComparable.CompareTo y el método IComparer.Compare devuelven un entero que indica el resultado de la comparación de los dos valores. Equals se usa para comprobaciones de igualdad; los métodos IComparable.CompareTo y IComparer.Compare y sus homólogos en las interfaces genéricas, los métodos IComparer<T>.Compare y IComparable<T>.CompareTo, se utilizan para ordenar.

Se pueden realizar comparaciones entre elementos de la colección o entre un elemento y un valor especificado. Cuando los comparadores no se especifican explícitamente, se esperará que al menos uno de los objetos comparados implemente la interfaz IComparable y consiga compararse a sí mismo con el otro objeto.

Algunas clases tienen métodos que aceptan una implementación de IComparer como parámetro. Cuando se utilizan estos métodos y el parámetro IComparer no es una referencia nula (Nothing en Visual Basic), no será necesario que los objetos comparados implementen IComparable. Sin embargo, siempre resulta conveniente implementar IComparable en todas las clases que se pueden usar como valores en una colección de lista o como claves en una colección de diccionario.

Algunas sobrecargas de constructores para colecciones de diccionario aceptan una implementación de IComparer, con la que, siempre que se requieren comparaciones, se comparan las claves. Array tiene sobrecargas de su método Sort y acepta una implementación de IComparer, que sólo se utiliza para esa llamada concreta al método Sort.

La configuración de la referencia cultural actual del sistema puede afectar a las comparaciones y ordenaciones de una colección. De forma predeterminada, las comparaciones y ordenaciones de las clases Collections tienen en cuenta la referencia cultural. Para pasar por alto la configuración de la referencia cultural y, así, obtener resultados de comparaciones y ordenaciones coherentes, deberá utilizarse InvariantCulture con sobrecargas de miembros que acepten CultureInfo. Para obtener más información, vea Realizar operaciones de cadenas que no distinguen entre referencias culturales en colecciones y Realizar operaciones de cadenas que no distinguen entre referencias culturales en matrices.

Vea también

Referencia

IComparer

IComparer<T>

IComparable

IComparable<T>

Otros recursos

Crear y manipular colecciones