toint32 todouble significa que parse convert c# .net casting

todouble - string to int c#



¿Por qué usar Convert.ToInt32 sobre el casting? (8)

Convert es una clase que contiene una serie de métodos estáticos y se supone que debe utilizarse para convertir tipos base, los tipos admitidos son Boolean, Char, SByte, Byte, Int16, Int32, Int64, UInt16, UInt32, UInt64, Single, Double, Decimal, DateTime y String. El operador de reparto le permite hacer lo mismo, pero también puede usarlo para otros tipos, incluidos los tipos que cree. También puede definir estos operadores en sus clases, lo que le permite convertir de cualquier cosa a cualquier cosa. Así que esa es la diferencia, uno es un método y el otro es un operador, no he comprobado las agallas del operador al convertir e int en una cadena, pero podría tener la misma lógica que los métodos en Convertir.

Esta pregunta ya tiene una respuesta aquí:

Una pregunta surgida en el trabajo hoy acerca de cómo convertir un objeto en su tipo específico (un int ), dije que lo lanzara:

int i = (int)object;

un colega dijo que usara Convert.ToInt32() .

int i = Convert.ToInt32(object)

¿Cuál es la diferencia entre Convert.ToInt32() y un lanzamiento de objeto directo?


Convert.ToInt32 es básicamente lo mismo que int.Parse Con una diferencia: si usa int.Parse (nulo) se lanza una excepción, mientras que Convert.ToInt32 devuelve 0

Por otro lado, la conversión es una operación más compleja y solo funcionará si el valor realmente es un tipo de valor int en caja o anohter (en caja / sin caja) que se puede convertir implícitamente.

(El boxeo es una representación de objeto de un tipo de valor)


La diferencia es que Convert.ToInt32(object value) intentará usar IConvertible para convertir el valor a int, donde la conversión directa simplemente lanzará una excepción si dicha conversión no es válida.

Las otras sobrecargas también intentan convertir y no lanzar .


No todos los objetos pueden ser lanzados directamente a int . Por ejemplo, lo siguiente no se compilará:

string s = "1"; int i = (int)s;

porque la string no es convertible implícitamente a int .

Sin embargo, esto es legal:

string s = "1"; int i = Convert.ToInt32(s);

Como nota al margen, tanto el lanzamiento como el Convert pueden lanzar excepciones si el objeto de entrada no se puede convertir. Sin embargo, int.TryParse no lanza si falla; más bien, devuelve falso (pero solo toma una cadena, por lo que tiene que .ToString() su objeto de entrada antes de usarlo):

object s = "1"; int i; if(int.TryParse(s.ToString(), out i)) { // i now has a value of 1 }


Si sabe que la instancia en caja es un int, puede usar de manera segura el operador de (int) cast para desempaquetarlo. Sin embargo, si es convertible a un int (por ejemplo, un flotador), el uso del operador de conversión fallará en el tiempo de ejecución.

Consulte la documentación de la clase Convert para obtener más detalles sobre las conversiones específicas que permite y no permite.


Solo se puede realizar la conversión cuando el tipo original tiene una conversión definida para el nuevo tipo. Por lo tanto, la conversión de un tipo numérico a otro (por ejemplo, long to int) es normalmente posible, pero la conversión de tipos no numéricos a tipos numéricos (eg string a int) normalmente no es posible. Convert proporciona muchos más métodos para cambiar estos tipos no numéricos a numéricos, por lo que la razón para usarlos es que es menos probable que obtenga un error.


Son fundamentalmente diferentes.

La conversión dice que el objeto es una instancia del tipo al que se está convirtiendo, por lo que lanzarlo.

Convert dice que hay una conversión entre los tipos que se están convirtiendo.

Así, por ejemplo, no puede convertir una cadena en un int, pero puede convertirla. Existe cierta área gris / superposición debido a ciertas reglas de conversión incorporadas para tipos primitivos, o conversiones de conversión explícitas que puede agregar a sus propios tipos. Pero en general no pensaría en estos dos como el equivalente.

Dado que no hay una opción ''mejor'', debe usar la opción que tenga sentido en el contexto dado.


Tiendo a preferir Convert solo porque proporciona una interfaz agradable y uniforme para la conversión. Por ejemplo, Convert.ToInt32("45") funciona pero (int)"45" , no lo hace.

Convert también informará problemas como lanzar una OverflowException . El lanzamiento puede ser peligroso, ya que el lanzamiento de, por ejemplo, mucho tiempo hasta un int podría producir un mal resultado y el tiempo de ejecución no lo dirá.

También me gusta que Convert.ToX(object obj) exista, lo que te permite disparar cosas a Convert y, en su mayor parte, olvidarlo.