¿Cuál es la diferencia entre Convert.ToString()
y .ToString()
?
Encontré muchas diferencias en línea, pero ¿cuál es la principal diferencia?
c#
type-conversion
tostring
TinTin
fuente
fuente
Respuestas:
Convert.ToString()
manejanull
, mientrasToString()
que no.fuente
null
devolver una cadena vacía o lanzar una excepción? Es como la diferencia entre lanzar y usaras
: conversión silenciosa.Llamar
ToString()
a un objeto supone que el objeto no es nulo (ya que un objeto debe existir para llamar a un método de instancia).Convert.ToString(obj)
no necesita suponer que el objeto no es nulo (ya que es un método estático en la clase Convert), sino que volveráString.Empty
si es nulo.fuente
Convert.ToString(string value)
devuelvenull
si el argumento esnull
.Convert.ToString(object value)
devuelveString.Empty
si el argumento esnull
.Además de otras respuestas sobre el manejo de
null
valores,Convert.ToString
intenta usarIFormattable
eIConvertible
interfaces antes de llamar a baseObject.ToString
.Ejemplo:
Resultado:
fuente
IConvertible
tiene prioridad sobreIFormattable
, que a su vez tiene prioridad sobre laObject.ToString()
implementación.Vamos a entender la diferencia a través de este ejemplo:
Podemos convertir el entero
i
usandoi.ToString ()
oConvert.ToString
. Entonces, ¿cuál es la diferencia?La diferencia básica entre ellos es que la
Convert
función maneja NULLS mientrasi.ToString ()
que no; arrojará un error de excepción de referencia NULL. Entonces, como una buena práctica de codificación, el usoconvert
siempre es seguro.fuente
Puede crear una clase y anular el
toString
método para hacer lo que quiera.Por ejemplo, puede crear una clase "MyMail" y anular el
toString
método para enviar un correo electrónico o realizar alguna otra operación en lugar de escribir el objeto actual.El
Convert.toString
Convierte el valor especificado la representación de cadena equivalente.fuente
fuente
Los métodos son "básicamente" los mismos, excepto el manejo nulo .
Desde MSDN:
Método Convert.ToString
Object.ToString
fuente
null
,""
O"null"
?En
Convert.ToString()
, la conversión maneja unNULL
valor o no, pero.ToString()
no maneja unNULL
valor y unNULL
error de excepción de referencia. Por lo tanto, es una buena práctica usarloConvert.ToString()
.fuente
Para los amantes del código, esta es la mejor respuesta.
fuente
Estoy de acuerdo con la respuesta de @ Ryan . Por cierto, comenzando con C # 6.0 para este propósito, puede usar:
o
en vez de
fuente
ToString()
no puede manejar valores nulos yconvert.ToString()
puede manejar valores que son nulos, por lo tanto, cuando desea que su sistema maneje el uso de valores nulosconvert.ToString()
.fuente
Convert.ToString(strName)
manejará valores nulos ystrName.Tostring()
no manejará valores nulos y lanzará una excepción.Entonces es mejor usar
Convert.ToString()
entonces.ToString();
fuente
Ambos se utilizan para convertir un tipo específico a cadena, es decir, int a cadena, flotante a cadena o un objeto a cadena.
ToString()
no puede manejar nulo mientras que en caso deConvert.ToString()
manejará valor nulo.Ejemplo:
fuente
Convert.ToString
no manejanNull Exception
. simplemente lo hace:return value == null ? string.Empty : value.ToString()
Para comprender ambos métodos, tomemos un ejemplo:
Aquí, ambos métodos se utilizan para convertir la cadena, pero la diferencia básica entre ellos es:
Convert
manejadores de funcionesNULL
, mientrasi.ToString()
que no arrojará unNULL reference exception error.
As, ya que una buena práctica de codificaciónconvert
siempre es segura.Veamos otro ejemplo:
fuente
Convert.ToString(value)
primero intenta lanzar obj a IConvertible , luego IFormattable para llamar a losToString(...)
métodos correspondientes . Si, en cambio, el valor del parámetro fuenull
entonces returnstring.Empty
. Como último recurso, regreseobj.ToString()
si nada más funcionó.Vale la pena señalar que
Convert.ToString(value)
puede regresarnull
si, por ejemplo,value.ToString()
devuelve nulo.Ver fuente de referencia .Net
fuente
Escribí este código y lo compilé.
Al usar 'ingeniería inversa' ( ilspy ) descubro que 'object.ToString ()' y 'Convert.ToString (obj)' hacen exactamente una cosa. de hecho 'Convert.ToString (obj)' call 'object.ToString ()' entonces 'object.ToString ()' es más rápido.
fuente
En C # si declara una variable de cadena y si no asigna ningún valor a esa variable, entonces, de manera predeterminada, esa variable toma un valor nulo. En tal caso, si utiliza el método ToString (), su programa arrojará la excepción de referencia nula. Por otro lado, si usa el método Convert.ToString (), su programa no arrojará una excepción.
fuente
Convert.Tostring()
básicamente solo llama a lo siguientevalue == null ? String.Empty: value.ToString()
(string)variable
sólo fundido cuando hay una implícita o explícita del operador en lo que usted está echandoToString()
puede ser anulado por el tipo (tiene control sobre lo que hace), si no da como resultado el nombre del tipoObviamente, si un objeto es nulo , no puede acceder al miembro de la instancia
ToString()
, causará una excepciónfuente
La función Convert.Tostring () maneja el NULL mientras que el método .ToString () no. visite aquí .
fuente