我想知道在对象中对值类型进行装箱是否是一种特殊情况,或者在删除对它的任何引用后,.NET 构造的“框”是否会变成垃圾(GC 必须收集)。
例如, StringBuilder.AppendFormat() 有这些重载:
StringBuilder.AppendFormat(string format, object arg0);
StringBuilder.AppendFormat(string format, object arg0, object arg1);
StringBuilder.AppendFormat(string format, object arg0, object arg1, object arg2);
StringBuilder.AppendFormat(string format, params object[] args);
为具有 3 个或更少参数的调用提供这些额外的重载可能表明装箱确实是一种特殊情况(或者从性能的角度来看,它可以避免数组构造)。
从理论上讲,使用普通的旧引用计数,可能使用可重用框池将是一个有效的实现,因为不能有从一个框到另一个框的引用,只有从 .NET 对象到一个框。