Я понял, что в Microsoft.NET Framework тип возвращаемого типа void является структурой. Почему?
...
public void TestMethod()
{
}
...
Ответ 1
В структуре используется тип значения, называемый System.Void, чтобы представить ключевое слово void для возвращаемого типа для использования с отражением. Хотя void означает отсутствие возвращаемого значения, он по-прежнему технически является типом, и для того, чтобы он был выражен как таковой в коде, он должен быть либо структурой (тип значения), либо классом (ссылочным типом).
В связи с тем, что разработчики фреймворков решили сделать System.Void структуру, а не класс, никто не догадывается, но она должна быть представлена типом в первую очередь. Я согласен с комментариями, что это позволит избежать ненужных служебных сообщений, обычно связанных с поиском ссылок, среди других оптимизаций.