Convert.ToString()
和之间有什么区别.ToString()
?
我在网上发现了很多区别,但是主要区别是什么?
Convert.ToString()
和之间有什么区别.ToString()
?
我在网上发现了很多区别,但是主要区别是什么?
Answers:
Convert.ToString()
处理null
,而ToString()
不能。
null
返回空字符串或引发异常?有点像强制转换和使用之间的区别as
:静默转换。
调用ToString()
对象假定该对象不为null(因为需要存在一个对象才能在其上调用实例方法)。Convert.ToString(obj)
不需要假定对象不是null(因为它是Convert类的静态方法),但是String.Empty
如果它为 null ,则将返回。
Convert.ToString(string value)
返回。 如果参数为,则返回。null
null
Convert.ToString(object value)
String.Empty
null
除了有关处理null
值的其他答案外,请在调用base之前Convert.ToString
尝试使用IFormattable
和IConvertible
接口Object.ToString
。
例:
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
您可以创建一个类并重写该toString
方法以执行所需的任何操作。
例如,您可以创建一个“ MyMail”类,并重写该toString
方法以发送电子邮件或执行其他操作,而不用编写当前对象。
该Convert.toString
转换将指定值其等效的字符串表示。
除了处理null 之外,这些方法“基本”相同。
Pen pen = null;
Convert.ToString(pen); // No exception thrown
pen.ToString(); // Throws NullReferenceException
从MSDN:
Convert.ToString方法
将指定的值转换为其等效的字符串表示形式。
返回表示当前对象的字符串。
null
,""
还是"null"
?
在中Convert.ToString()
,Convert处理一个NULL
值或.ToString()
不处理一个NULL
值,但在其中不处理值和NULL
引用异常错误。因此使用是一种良好的做法Convert.ToString()
。
对于喜欢代码的人来说,这是最好的答案。
.............. 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)
Convert.ToString(strName)
将处理可为空的值,并且strName.Tostring()
将不处理可为空的值并引发异常。
因此,它是更好地使用Convert.ToString()
再.ToString();
ToString() Vs Convert.ToString()
相似之处:-
两者都用于将特定类型转换为字符串,即将int转换为string,将float转换为string或将对象转换为string。
区别 :-
ToString()
无法处理null,而with Convert.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.
}
}
}
Convert.ToString
不处理Null Exception
。它只是做:return value == null ? string.Empty : value.ToString()
为了理解这两种方法,让我们举个例子:
int i =0;
MessageBox.Show(i.ToString());
MessageBox.Show(Convert.ToString(i));
在这里,这两种方法都用于转换字符串,但是它们之间的基本区别是:Convert
函数handles NULL
,但i.ToString()
不会抛出异常。NULL reference exception error.
因此,使用良好的编码习惯convert
总是安全的。
让我们看另一个例子:
string s;
object o = null;
s = o.ToString();
//returns a null reference exception for s.
string s;
object o = null;
s = Convert.ToString(o);
//returns an empty string for s and does not throw an exception.
Convert.ToString(value)
首先尝试将obj 强制转换为IConvertible,然后尝试IFormattable调用相应的ToString(...)
方法。如果不是,null
则返回参数值string.Empty
。万不得已时,请返回obj.ToString()
。
值得注意的是,例如返回null时Convert.ToString(value)
可以返回。null
value.ToString()
请参见.Net参考源
我编写了这段代码并进行了编译。
class Program
{
static void Main(string[] args)
{
int a = 1;
Console.WriteLine(a.ToString());
Console.WriteLine(Convert.ToString(a));
}
}
通过使用“逆向工程”(ilspy),我发现“ object.ToString()”和“ Convert.ToString(obj)”恰好可以做一件事。实际上,“ Convert.ToString(obj)”调用“ object.ToString()”,因此“ object.ToString()”更快。
class System.Object
{
public string ToString(IFormatProvider provider)
{
return Number.FormatInt32(this, null, NumberFormatInfo.GetInstance(provider));
}
}
class System.Convert
{
public static string ToString(object value)
{
return value.ToString(CultureInfo.CurrentCulture);
}
}