2011-11-22 22 views
5

Estoy tratando de comparar objetos en un object[] que son de un solo tipo (desconocido en tiempo de ejecución). Son de System.string, int, decimal, Datetime, o bool tipos.Object.CompareTo (Object) para tipo de datos desconocido

¿Hay alguna forma de comparar dos de estos objetos para determinar si uno es mayor o menor que otro sin tener que convertirlos primero en el tipo apropiado?

+0

Usted tiene al menos para echarlos a IComparable y luego usar CompareTo. – user629926

Respuesta

7

Todos los tipos en cuestión implementan IComparable, por lo tanto, si poder comparar elementos es un requisito intrínseco de su matriz, podría declararlo como IComparable[].

+1

Hah, fuiste 3 segundos más rápido ;-) –

2

Todos esos tipos implemento IComparable interfaz, para que pueda emitir sus objetos a IComparable (o simplemente mantener una matriz IComparable[] en lugar de object[]). Entonces puede usar el método CompareTo(object x).

1

Todos los tipos que menciona implementa IComparable, por lo que puede usar IComparable.CompareTo. A modo de ejemplo:

object[] ints = new object[] { 2, 1, 3}; 
object n = 2; 
var compareResults = ints.OfType<IComparable>().Select(c => c.CompareTo(n)); 
Cuestiones relacionadas