Tin*_*Tin 149 c# tostring type-conversion
Convert.ToString()
和之间有什么区别.ToString()
?
我在网上发现了很多不同之处,但主要区别是什么?
Rya*_*yan 220
Convert.ToString()
处理null
,而ToString()
不是.
Chr*_*yer 61
调用ToString()
一个对象假定该对象不为null(因为需要存在一个对象来调用它上面的实例方法).Convert.ToString(obj)
不需要假定对象不为null(因为它是Convert类的静态方法),但是String.Empty
如果它是 null 则返回.
Ale*_*der 21
除了关于处理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();
}
}
Run Code Online (Sandbox Code Playgroud)
结果:
Convert.ToString(new FormattableType()); // 0.42
new FormattableType().ToString(); // 0,42
Run Code Online (Sandbox Code Playgroud)
小智 11
让我们通过这个例子理解差异:
int i= 0;
MessageBox.Show(i.ToString());
MessageBox.Show(Convert.ToString(i));
Run Code Online (Sandbox Code Playgroud)
我们可以i
使用i.ToString ()
或转换整数Convert.ToString
.那有什么区别?
它们之间的基本区别是Convert
函数处理NULLS而i.ToString ()
不是; 它会抛出NULL引用异常错误.因此,良好的编码实践使用convert
始终是安全的.
小智 6
您可以创建一个类并覆盖该toString
方法以执行您想要的任何操作.
例如,您可以创建一个类"MyMail"并覆盖该toString
方法以发送电子邮件或执行其他操作,而不是编写当前对象.
的Convert.toString
转换为指定的值到它的等效的字符串表示.
除了处理null之外,这些方法“基本上”相同。
Pen pen = null;
Convert.ToString(pen); // No exception thrown
pen.ToString(); // Throws NullReferenceException
Run Code Online (Sandbox Code Playgroud)
来自 MSDN:
Convert.ToString 方法
将指定值转换为其等效的字符串表示形式。
返回表示当前对象的字符串。
小智 5
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
Run Code Online (Sandbox Code Playgroud)
我同意@ Ryan的回答。顺便说一下,从 C#6.0 开始,您可以使用:
someString?.ToString() ?? string.Empty;
Run Code Online (Sandbox Code Playgroud)
或者
$"{someString}"; // I do not recommend this approach, although this is the most concise option.
Run Code Online (Sandbox Code Playgroud)
代替
Convert.ToString(someString);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
113045 次 |
最近记录: |