ToString()在字符串上使用时会产生新的字符串吗?

时间:2010-09-26 01:26:54

标签: c# .net string

"hello".ToString()是否会生成一个新字符串,或者它是否足够智能以返回对同一对象的引用?

3 个答案:

答案 0 :(得分:11)

在标题中回答你的问题:没有。

根据.NET Reflector,在.ToString()上调用.ToString(IFormatProvider)string,它只会返回。

答案 1 :(得分:2)

你可以用一个简单的断言来测试这个假设:

using System.Diagnostics;

void ToStringHypothesis()
{
    string myString = "Hello!";
    string otherString = myString.ToString();

    Debug.Assert(Object.ReferenceEquals(myString, otherString));
}

由于字符串在.NET中是不可变的,String.ToString()实现的敏感实现是返回对自身的引用。

答案 2 :(得分:0)

足够聪明(至少in Mono):

public override String ToString ()
{
return this;
}