使用以下代码段:
public static void Main()
{
int v = 2;
Console.WriteLine("number" + "," + v);
}
显然,最好在调用v
中用替换以防止将值类型装箱。但是,调用仍然像在装箱值类型一样在堆上分配一个对象。v.ToString()
WriteLine()
ToString()
那么使用v.ToString()
而不是装箱有什么好处?
更新:int.ToString()
在将值传递给string.Concat()
有或没有显式调用int.ToString()
自己的情况下,好像被调用了。我检查了CIL有无ToString()
,它们是相同的。
ToString()
仅当变量的类型没有重写时才装箱ToString()
(因此,它必须转到Object
类的实现中)。但是,int
确实有一个覆盖ToString()
(请参见http://msdn.microsoft.com/zh-cn/library/6t7dwaa5(v=vs.110).aspx),因此不会发生这种情况。
装箱实际上是由+
操作员执行的,因为它只调用string.Concat
,它需要类型的参数Object
(或string
,取决于使用的重载类型)。因此,必须为呼叫装箱整数。然后,该string.Concat
方法int
再次打开框并调用ToString()
。因此,如果您自己命名,则不必进行装箱和拆箱操作,从而节省了时间。
尽管在大多数情况下性能会有所提高,但性能会有一定的提高。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句