Me gustaría crear una función que compruebe si un valor numérico pasado como argumento tiene un valor mayor que cero. Algo como esto:Cómo puedo comparar cualquier tipo numérico a cero en C#
public bool IsGreaterThanZero(object value)
{
if(value is int)
{
return ((int)value > 0);
}
else if(value is float)
{
// Similar code for float
}
return false;
}
¿Puedo tratar de convertir el objeto pasado como argumento de la función de un tipo de datos numéricos por lo que a continuación se puede comparar a cero en lugar de comprobar para cada tipo en mi sentencia if? Si el lanzamiento falla, devolvería falso. ¿Hay una forma mejor (leer más corta, más legible) para hacer esto?
Editar: Algunos han preguntado sobre si sé el tipo será un valor numérico, por qué el objeto, etc Espero que esto hace las cosas más claras.
Esta función sería parte de un convertidor de Silverlight que implementa la interfaz IValueConverter
que tiene una firma de conversión de
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
Una primera, que sólo quería el convertidor de trabajar con enteros, pero mi imaginación empezó a funcionar salvaje y piense qué pasa si tengo números de coma flotante y otros tipos numéricos. Quería hacer el convertidor lo más flexible posible. Inicialmente pensé que toda esta información adicional se interpondría en el camino de lo que quería hacer, así que no lo incluí en mi pregunta.
¿Por qué es esto preferible usar sólo la > operador? – Nick
¿qué hay de lanzarlo como una cadena? Compararlo con "0" – Luiscencio
@Nick no se puede comparar un int a un objeto ... – Langdon