С#. Нужно ли мне иметь новое пространство имен при определении нового класса?

Недавно я закончил вводный онлайн-курс по C# в местном колледже. На финальном экзамене был вопрос с несколькими вариантами ответов:

В. Что из следующего верно в отношении классов, не содержащих метод Main?

А. Они пишутся и компилируются точно так же, как классы, содержащие метод Main.

Б , Они написаны точно так же, как и другие классы, но они скомпилированы в сетевой модуль.

C. Когда они написаны, они должны определять новое пространство имен, но они скомпилированы так же, как и другие классы.< br/>
D. При написании они должны определять новое пространство имен и компилироваться в сетевой модуль.

Я выбрал B, но правильный ответ инструктора был D. Может ли кто-нибудь помочь мне понять, почему? Я знал, что могу создать новый класс с тем же пространством имен, что и класс, содержащий Main(). Поэтому я выбрал Б.


c#
person user3771738    schedule 08.07.2020    source источник
comment
технически вам вообще не нужно определять пространство имен, если это так, оно будет в пространстве имен global::. Я даже не знаю, что означает netmodule.   -  person Crowcoder    schedule 09.07.2020
comment
Вы спрашивали своего инструктора, почему D, а не B? Вы показывали им свой код, в котором повторно использовали одно и то же пространство имен?   -  person mjwills    schedule 09.07.2020
comment
@Crowcoder docs.microsoft.com/en-us/ архив/блоги/junfeng/   -  person mjwills    schedule 09.07.2020
comment
Ваш инструктор просто не прав.   -  person Dave Doknjas    schedule 09.07.2020
comment
Класс C# не требует никакого пространства имен. Понятия не имею, о чем он говорит с сетевым модулем. Верните деньги за урок.   -  person Yuriy Faktorovich    schedule 09.07.2020
comment
@mjwills спасибо, я посмотрел. Это интересно, и вторая вещь, которую я узнал сегодня о .NET сегодня, и я удивлен, что никогда не сталкивался с ней.   -  person Crowcoder    schedule 09.07.2020
comment
Спасибо за все комментарии. Инструктор не разрешил нам использовать IDE. Все делалось из командной строки. Сетевой модуль, на который он ссылался, исходит из параметра командной строки /t. Например, используя csc /t:module MyNewClass.cs для компиляции модуля, затем csc MyMainClass.cs /addmodule:MyNewClass.netmodule для компиляции/связывания всего этого. Мне не удалось связаться с инструктором для комментариев.   -  person user3771738    schedule 10.07.2020