Convert.ToString()和.ToString()之间的区别

Convert.ToString().ToString()什么区别?

我在网上发现了很多差异,但最大的区别是什么?

Convert.ToString()处理null ,而ToString()不处理。

在对象上调用ToString()假定对象不是null(因为对象需要存在才能调用实例方法)。 Convert.ToString(obj)不需要假定对象不是null(因为它是Convert类的一个静态方法),但是如果它 null,将会返回String.Empty

让我们通过这个例子来了解不同之处:

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

我们可以使用i.ToString ()Convert.ToString来转换整数。 那有什么区别?

他们之间的基本区别是Convert函数处理i.ToString ()i.ToString ()不; 它会抛出一个NULL引用exception错误。 所以使用convert良好编码习惯总是安全的。

除了处理null值的其他答案之外, Convert.ToString在调用基类IFormattable之前尝试使用IFormattableIConvertible接口。

例:

 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(); } } 

结果:

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

您可以创build一个类并重写toString方法来执行任何您想要的操作。

例如,您可以创build一个“MyMail”类,并覆盖toString方法来发送电子邮件或执行其他操作,而不是写入当前对象。

Convert.toString将指定的值转换为其等效的string表示forms。

Convert.ToString() ,Convert处理NULL值或不处理.ToString()它不处理NULL值和NULL引用exception错误。 所以最好使用Convert.ToString()

 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 

对于爱好者来说,这是最好的答案。

  .............. 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) 

除了处理null 之外 ,这些方法“基本上”是相同的。

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

来自MSDN:
Convert.ToString方法

将指定的值转换为其等效的string表示forms。

Object.ToString

返回表示当前对象的string。

 ToString() Vs Convert.ToString() 

相似之处: –

两者都用于将特定types转换为string,即将int转换为string,将其浮点到string或将对象转换为string。

区别 :-

Convert.ToString()将处理空值的情况下ToString()不能处理null。

例如:

 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. } } } 

ToString()不能处理空值和convert.ToString()可以处理空值,所以当你想要你的系统处理空值使用convert.ToString()

Convert.ToString(strName)将处理空值, strName.Tostring()不会处理空值并抛出exception。

所以最好使用Convert.ToString()然后.ToString();

我同意@ Ryan的回答。 顺便说一下,从C#6.0开始,为此可以使用:

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

要么

 $"{someString}"; // bad practice, but this is very concise 

代替

 Convert.ToString(someString);