我问这个是为了性能 - 使用大量装箱会产生大量堆分配,这会带来更多 GC 收集,有时会导致应用程序卡住,从而惹恼用户。
最佳答案
所有字符串插值(至少在常见情况下)都是调用string.Format()
。
现在,调用 string.Format()
会分配相当多的空间,而不仅仅是由于装箱(例如,string.Format("{0:s} - {1: B}:值为:{2:C2}", DateTime.UtcNow, Guid.NewGuid(), 3.50m)
进行了 13 次分配,其中只有 3 次是由于装箱所致),但 there is talk about improving that in the future .
尽管像往常一样,在性能方面,您通常不应该盲目地到处编写不可读的代码,因为可读版本存在已知的性能问题。相反,将不可读的高效代码限制在实际需要它的代码部分。
关于boxing - C# 6 字符串插值是否像 string.Format() 那样对其参数使用装箱?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40133739/