Мало ценится тот факт, что с точки зрения базовой системы типов CLR не существует такого понятия, как «пространство имен». Скорее, это просто соглашение , что мы говорим, что тип, который содержит точки в своем имени, является "членом пространства имен". Логически нет никакой разницы между юридическим кодом:
namespace N
{
class C {}
}
и псевдо-код:
class N.C {}
C # заставляет вас притворяться, что эта приятная выдумка - реальность, но это всего лишь выдумка - с точки зрения системы типов CLR, конечно. С точки зрения компилятора C #, конечно, пространства имен являются «реальными». Они просто не соответствуют ничему в метаданных, кроме части имени типа.
Вкратце: если вы делаете сборку с «пустым» пространством имен, то «пространство имен» вообще не существует в скомпилированном двоичном файле. «Пространство имен» появляется только в том случае, если в библиотеке есть тип, в имени которого есть точки.
Теперь, почему вы заботитесь о том, чтобы "пустое" пространство имен присутствовало в двоичной форме, я понятия не имею.
Я предполагаю, что предыдущие версии C # демонстрируют поведение, которое не требует этого фиктивного класса
Неа. Каждая версия C # начиная с 1.0 выбрасывает пустые пространства имен.