"hello".ToString()
是否会生成一个新字符串,或者它是否足够智能以返回对同一对象的引用?
答案 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;
}