AndreyAkinshin/ProblemBook.NET — pull request #4 by igor-shevchenko (2014-12-11 09:29:37+00:00)
Title: Поправил неточность в объяснении решения задачи «Boxing»

Если структура переопределяет метод `ToString` (как в задаче), то при вызове этого метода упаковки не происходит. В примере из задачи экземпляр `Foo` упаковывается по другой причине: для `Console.WriteLine` используется перегруженный вариант с аргументом типа `object`.

На таком примере можно увидеть, что для вызова `ToString` не требуется упаковка:

struct Foo
{
int value;
public override string ToString()
{
if (value == 2)
return "Baz";
return (value++ == 0) ? "Foo" : "Bar";
}
}
void Main()
{
var foo = new Foo();
Console.WriteLine(foo.ToString()); // "Foo"
Console.WriteLine(foo.ToString()); // "Bar"
Console.WriteLine(foo.ToString()); // "Baz"
}