Я читал о боксе/распаковке, и получается, что если вы делаете обычный String.Format()
, где у вас есть тип значения в вашем списке аргументов object[]
, это вызовет операцию бокса. Например, если вы пытаетесь распечатать значение целого числа и сделать string.Format("My value is {0}",myVal)
, он вставит ваш myVal
int
в поле и запустит на нем функцию ToString
.
Просмотр, Я нашел эту статью.
Похоже, вы можете избежать штрафа за бокс, просто выполнив .ToString
по типу значения, прежде чем передавать его в строку. Функция Format: string.Format("My value is {0}",myVal.ToString())
- Это правда? Я склонен полагать, что автор доказательства.
- Если это так, почему компилятор просто не делает этого для тебя? Может быть, это изменилось с 2006 года? Кто-нибудь знает? (У меня нет времени/опыта, чтобы выполнить весь анализ IL).