Diferencia entre Convert.ToString () y .ToString ()

¿Cuál es la diferencia entre Convert.ToString() y .ToString() ?

Encontré muchas diferencias en línea, pero ¿cuál es la principal diferencia?

Convert.ToString() maneja null , mientras que ToString() no lo hace.

Llamar a ToString() en un objeto supone que el objeto no es nulo (ya que un objeto necesita 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 devolverá String.Empty si es nulo.

Permite entender la diferencia a través de este ejemplo:

 int i= 0; MessageBox.Show(i.ToString()); MessageBox.Show(Convert.ToString(i)); 

Podemos convertir el entero i utilizando i.ToString () o Convert.ToString . Entonces, ¿cuál es la diferencia?

La diferencia básica entre ellos es que la función Convert maneja NULLS mientras que i.ToString () no; arrojará un error de excepción de referencia NULO. Entonces, una buena práctica de encoding al usar convert es siempre segura.

Además de otras respuestas sobre el manejo de valores null , Convert.ToString intenta usar interfaces IFormattable e IConvertible antes de llamar a base Object.ToString .

Ejemplo:

 class FormattableType : IFormattable { private double value = 0.42; public string ToString(string format, IFormatProvider formatProvider) { if (formatProvider == null) { // ... using some IOC-containers // ... or using CultureInfo.CurrentCulture / Thread.CurrentThread.CurrentCulture formatProvider = CultureInfo.InvariantCulture; } // ... doing things with format return value.ToString(formatProvider); } public override string ToString() { return value.ToString(); } } 

Resultado:

 Convert.ToString(new FormattableType()); // 0.42 new FormattableType().ToString(); // 0,42 

Puede crear una clase y anular el método toString para hacer lo que quiera.

Por ejemplo, puede crear una clase “MyMail” y anular el método toString para enviar un correo electrónico o realizar alguna otra operación en lugar de escribir el objeto actual.

Convert.toString convierte el valor especificado a su representación de cadena equivalente.

 object o=null; string s; s=o.toString(); //returns a null reference exception for string s. string str=convert.tostring(o); //returns an empty string for string str and does not throw an exception.,it's //better to use convert.tostring() for good coding 

En Convert.ToString() , Convert maneja un valor NULL o no, pero en .ToString() no maneja un valor NULL y un error de excepción de referencia NULL . Por lo tanto, es una buena práctica usar Convert.ToString() .

Para los amantes del Código esta es la mejor respuesta.

  .............. Un Safe code ................................... Try ' In this code we will get "Object reference not set to an instance of an object." exception Dim a As Object a = Nothing a.ToString() Catch ex As NullReferenceException Response.Write(ex.Message) End Try '............... it is a safe code.............................. Dim b As Object b = Nothing Convert.ToString(b) 

Los métodos son “básicamente” lo mismo, excepto el manejo nulo .

 Pen pen = null; Convert.ToString(pen); // No exception thrown pen.ToString(); // Throws NullReferenceException 

Desde MSDN:
Método Convert.ToString

Convierte el valor especificado en su representación de cadena equivalente.

Object.ToString

Devuelve una cadena que representa el objeto actual.

Estoy de acuerdo con la respuesta de @ Ryan . Por cierto, comenzando con C # 6.0 para este propósito, puedes usar:

 someString?.ToString() ?? string.Empty; 

o

 $"{someString}"; // I do not recommend this approach, although this is the most concise option. 

en lugar de

 Convert.ToString(someString); 

ToString() no puede manejar valores nulos y convert.ToString() puede manejar valores que son nulos, por lo tanto, cuando desee que su sistema maneje valores nulos, use convert.ToString() .

Convert.ToString(strName) manejará los valores null-able y strName.Tostring() no manejará el valor nulo y lanzará una excepción.

Entonces, es mejor usar Convert.ToString() luego .ToString();

 ToString() Vs Convert.ToString() 

Semejanzas:

Ambos se usan para convertir un tipo específico a cadena, es decir, int a string, float a string o un objeto a string.

Diferencia: –

ToString() no puede manejar nulo, mientras que en caso de que Convert.ToString() maneje el valor nulo.

Ejemplo:

 namespace Marcus { class Employee { public int Id { get; set; } public string Name { get; set; } } class Startup { public static void Main() { Employee e = new Employee(); e = null; string s = e.ToString(); // This will throw an null exception s = Convert.ToString(e); // This will throw null exception but it will be automatically handled by Convert.ToString() and exception will not be shown on command window. } } }