tipos number long data c# types

c# - number - System.Convert.ToInt vs(int)



value types c# (4)

Noté en otra publicación, alguien había hecho algo como:

double d = 3.1415; int i = Convert.ToInt32(Math.Floor(d));

¿Por qué usaron la función de conversión, en lugar de:

double d = 3.1415; int i = (int)d;

que tiene un piso implícito y convertir.

Además, más preocupante, noté en algunos códigos de producción que estaba leyendo:

double d = 3.1415; float f = Convert.ToSingle(d);

Es lo mismo que:

float f = (float)d;

¿Están todas esas conversiones por lo demás implícitas solo en la clase Convert para completar, o sirven para un propósito? Puedo entender la necesidad de .ToString (), pero no el resto.


Casting to int es un truncamiento implícito, no un piso implícito:

double d = -3.14; int i = (int)d; // i == -3

Elijo Math.Floor o Math.Round para hacer que mis intenciones sean más explícitas.


Convert.ToInt32 () se utiliza en cadenas ( http://msdn.microsoft.com/en-us/library/sf1aw27b.aspx ) mientras que la conversión solo se puede usar en tipos que tienen convertidores internos (tipos numéricos). El verdadero truco es decidir entre Int32.Parse y Convert.ToInt32 (). Convert.ToInt32 () tolera un parámetro nulo y devuelve 0 mientras Int32.Parse () arrojará una ArgumentNullException.


El redondeo también se maneja de manera diferente:

x = -2.5 (int) x = -2 Convert.ToInt32 (x) = - 2
x = -1.5 (int) x = -1 Convert.ToInt32 (x) = - 2
x = -0.5 (int) x = 0 Convert.ToInt32 (x) = 0
x = 0.5 (int) x = 0 Convert.ToInt32 (x) = 0
x = 1.5 (int) x = 1 Convert.ToInt32 (x) = 2
x = 2.5 (int) x = 2 Convert.ToInt32 (x) = 2

Observe que x = -1.5 y x = 1.5 casos.
En algunos algoritmos, el método de redondeo utilizado es fundamental para obtener la respuesta correcta.


Puede usar Convertir cuando tiene una cadena que desea convertir a una int

int i = Convert.ToInt32("1234");

Conversión y conversión arrojarán una excepción si fallan.

es decir, esto arrojará una excepción, no devolverá 0:

Convert.ToInt32("1234NonNumber");

En muchos casos, Convert y Casting tendrán el mismo resultado, pero un cast es muchas veces más fácil de leer.