transformar todecimal places parse keeping hexadecimal example convertir convert c# .net

c# - places - Diferencia entre Convert.ToDecimal(cadena) y Decimal.Parse(cadena)



decimal.tryparse c# example (6)

Desde bytes.com :

La clase Convert está diseñada para convertir una amplia gama de tipos, por lo que puede convertir más tipos a Decimal que con Decimal.Parse, que solo puede tratarse con String. Por otro lado, Decimal.Parse le permite especificar un estilo numérico.

Decimal y decimal son alias y son iguales.

Para Convert.ToDecimal (cadena), Decimal.Parse se llama internamente.

Morten Wennevik [C # MVP]

Como Decimal.Parse es llamado internamente por Convert.ToDecimal, si tiene requisitos de rendimiento extremos , es posible que desee adherirse a Decimal.Parse, se guardará un marco de pila.

¿Cuál es la diferencia en C # entre Convert.ToDecimal(string) y Decimal.Parse(string) ?

¿En qué escenarios usarías uno sobre el otro?

¿Qué impacto tiene en el rendimiento?

¿Qué otros factores debería tener en cuenta al elegir entre los dos?


Un factor que quizás no haya pensado es el método Decimal.TryParse . Tanto Convert.ToDecimal como Parse lanzan excepciones si no pueden convertir la cadena al formato decimal correcto. El método TryParse le proporciona un bonito patrón para la validación de entrada.

decimal result; if (decimal.TryParse("5.0", out result)) ; // you have a valid decimal to do as you please, no exception. else ; // uh-oh. error message time!

Este patrón es increíblemente increíble para la entrada del usuario de verificación de errores.


Hay una diferencia importante a tener en cuenta:

Convert.ToDecimal devolverá 0 si se le da una cadena null .

decimal.Parse arrojará una ArgumentNullException si la cadena que quiere analizar es null .


Convert.ToDecimal aparentemente no siempre devuelve 0. En mi sentencia linq

var query = from c in dc.DataContext.vw_WebOrders select new CisStoreData() { Discount = Convert.ToDecimal(c.Discount) };

El descuento sigue siendo nulo después de la conversión de un decimal? eso es nulo Sin embargo, fuera de una declaración de Linq, obtengo un 0 para la misma conversión. Frustrante y molesto.


La mayor diferencia entre Convert.ToDecimal(string) y Decimal.Parse(string) es que Convert maneja Null mientras que el otro arroja una excepción

Nota: No manejará la cadena vacía.


Una sugerencia común relacionada con el tema original: utilice TryParse() tan pronto como no esté realmente seguro de que el parámetro de cadena de entrada SERÁ la representación correcta del formato de número.