您的位置:首页 > 编程语言 > C#

C# Convert.ToString()与.ToString()的区别

2009-04-09 15:46 603 查看
下面的是Convert的源码:

public static class Convert
{
......
public static string ToString(object value)
{
return ToString(value, null);
}
......
public static string ToString(object value, IFormatProvider provider)
{
//如果实现了IConvertible接口,自动调用IConvertible接口的实现方法
IConvertible convertible = value as IConvertible;
if (convertible != null)
{
return convertible.ToString(provider);
}
//如果实现了IFormattable接口,自动调用IFormattable接口的实现方法
IFormattable formattable = value as IFormattable;
if (formattable != null)
{
return formattable.ToString(null, provider);
}
//如果不为空,自动调用ToString方法
if (value != null)
{
return value.ToString();
}
//如果为空,返回string.Empty
return string.Empty;
}
......
}
[/code]
下面是测试代码:

using System;

namespace ConvertTest
{
public class FormattableObject : IFormattable
{
public string ToString(string format, IFormatProvider formatProvider)
{
return "This is a formattable string.";
}
}

public class CommonObject
{
public override string ToString()
{
return "This is a commonObject.";
}
}

class Program
{
static void Main(string[] args)
{
FormattableObject formatObject = new FormattableObject();
Console.WriteLine(Convert.ToString(formatObject));
Console.WriteLine(formatObject.ToString());
CommonObject commonObject = new CommonObject();
Console.WriteLine(Convert.ToString(commonObject));
Console.WriteLine(commonObject.ToString());
commonObject = null;
Console.WriteLine(Convert.ToString(commonObject) == string.Empty);
Console.ReadKey();
}
}
}
[/code]
输出结果如下:

This is a formattable string.
Test.FormattableObject
This is a commonObject.
This is a commonObject.
True
オブジェクト参照がオブジェクト インスタンスに設定されていません。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: