【发布时间】:2013-08-12 21:57:27
【问题描述】:
最近在处理其他事情时,我在KeyValuePair<TKey, TValue>.ToString() implementation 上遇到了一段有点奇怪的代码。
public override string ToString()
{
StringBuilder stringBuilder = StringBuilderCache.Acquire(16);
stringBuilder.Append('[');
if (this.Key != null)
{
StringBuilder arg_33_0 = stringBuilder;
TKey tKey = this.Key;
arg_33_0.Append(tKey.ToString());
}
stringBuilder.Append(", ");
if (this.Value != null)
{
StringBuilder arg_67_0 = stringBuilder;
TValue tValue = this.Value;
arg_67_0.Append(tValue.ToString());
}
stringBuilder.Append(']');
return StringBuilderCache.GetStringAndRelease(stringBuilder);
}
跳过StringBuilderCache 类的使用(这是.NET 本身性能改进的一个很好的例子)我有一个问题:
为什么
if (this.Key != null)
{
StringBuilder arg_33_0 = stringBuilder;
TKey tKey = this.Key;
arg_33_0.Append(tKey.ToString());
}
更好
if(this.Key != null)
{
stringBuilder.Append(this.Key.ToString());
}
?
分配新的局部变量而不是直接使用实例有什么好处?
【问题讨论】:
标签: c# .net tostring keyvaluepair