如何" object.ToString()"在字符串连接语句中求值?

时间:2016-06-01 13:57:16

标签: c# tostring

我的问题是" object.ToString()"方法在字符串连接语句中求值?。

我的意思是如果写代码如: - :

class Employee
{
    public string Name{get; set;}

    public override string ToString()
    {
        return string.Format("Employee Name {0}", Name);
    }
}

static void Main()
{
    Employee emp = new Employee() {Name = "Ni3"};
    string result = "Result = " + emp;

    Console.WriteLine(result);
}

它产生 -

Result = Employee Name Ni3 

所以编译器会像这样转换语句 - :

string result= String.Concat("Result = ",emp.ToString());

还是有其他原因。

1 个答案:

答案 0 :(得分:4)

不完全是,您正在使用使用两个对象参数的overload

此方法在空检查后对这些对象调用.ToString()。请参阅备注部分:

  

该方法通过调用无参数来连接arg0和arg1   arg0和arg1的ToString方法;它没有添加任何分隔符   String.Empty用于代替任何null参数   如果是其中之一   arguments是一个数组引用,该方法连接一个字符串   表示该数组,而不是其成员(例如,   " System.String []"。)