¿Es posible en C# comparar dos objetos de tipos desconocidos (incluidos los tipos de referencia y de valor) utilizando sus comparadores de tipo si existen?C# compare dos objetos de tipos desconocidos (incluidos los tipos de referencia y valor)
El objetivo es escribir una función que tendría una firma así:
public bool Compare(object a, object b)
{
// compare logic goes here
}
cual se devolvía
Compare(100d, 100d) == true
Compare(100f, 100f) == true
Compare("hello", "hello") == true
Compare(null, null) == true
Compare(100d, 101d) == false
Compare(100f, null) == false
// Use type comparators where possible, i.e.:
Compare(new DateTime(2010, 12, 01), new DateTime(2010, 12, 01)) == true
Compare(new DateTime(2010, 12, 01), new DateTime(2010, 12, 02)) == false
Compare(new DateTime(2010, 12, 01), null) == false
¿Hay un enfoque genérico para la solución de este problema que podría funcionar para cualquier tipo de objeto?
+1: Para una buena explicación, – TalentTuner
+1 para esta y muchas otras respuestas del Sr. Skeet. ¡Gracias! –
Seguramente, este último solo funcionará para los tipos de referencia, ya que tendrá que tener 'donde T: clase' para usar' v1 == null', por lo que evitará la comparación del tipo de valor. – aqwert