Могут ли функции или переменные храниться в пространствах имен вместо классов - C# - PullRequest
0 голосов
/ 03 марта 2020

В C# все методы функций должны быть внутри класса, но по умолчанию в новом проекте Visual C# он создает класс внутри пространства имен. Можете ли вы хранить весь код внутри пространства имен вместо класса?

Ответы [ 3 ]

2 голосов
/ 03 марта 2020

Нет, вы не можете этого сделать. Пространства имен являются просто расширениями имен типов и помогают вам сортировать их по разным категориям (и избежать коллизий имен для разных библиотек).

В C# каждый метод (, свойство) или поле должны находиться в class или struct.

Ближе всего к переменным или методам, находящимся "просто в пространстве имен", будут stati c классы, такие как System.Math, который в основном представляет собой набор математических функций и констант.

Также обратите внимание, что объявления типов (классы, структуры, перечисления, интерфейсы и делегаты) также могут быть расположены в глобальном пространстве имен (которое является пространством имен без имени) или содержаться как объявление в классе или структура, которая делает структуру и класс похожими на пространства имен.

2 голосов
/ 03 марта 2020

Нет. Те вещи, о которых вы упомянули, должны быть внутри класса, а не в пространстве имен

Чтобы попытаться устранить любые недоразумения, пространство имен является организационным средством, так же как папка предназначена для организации файлов. Вы не можете открыть папку в Word и написать в ней текст, сохранить текст, скопировать папку на другой компьютер и т. Д. c .. Вы должны сделать все это в файле, а затем поместить файл в папку. , Таким же образом все «вещи» в C# выполняются в классе (или enum, struct или аналогичном), который является следствием файла на жестком диске. Пространства имен просто служат для группировки классов и, возможно, устраняют их неоднозначность, если они имеют то же имя, что и другой класс в другом пространстве имен

0 голосов
/ 03 марта 2020

Представьте пространство имен как уличный адрес, который указывает на какую-либо форму объекта (возможно, здание, может быть, со многими квартирами). Здание, содержащее материал, будет похоже на класс с его содержимым. Не имеет смысла помещать все вещи, которые обычно находятся в здании на улице (то есть помещать методы непосредственно в пространство имен). Он не останется там надолго, это точно:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...