Re[6]: Константы. Класс или структура?
От: _FRED_ Черногория
Дата: 04.07.24 09:45
Оценка:
Здравствуйте, hardcase, Вы писали:

_FR>>Мне кажется, это усложнило бы спеку рантайма/метаданных, сценарии перегрузки и разрешения имён (одна и так из самых не простых тем), пришлось бы задать правила инициализации

_FR>>таких полей (может и конструктор неймспейсу понадобился бы?), рефлекшен, какие-то ещё сценарии.
H>Спецификацию это никак бы не расширило просто потому что в .NET метаданных уже есть концепция "модуля" который и представляет собою статический класс.

Хм. Учитывая то, как Влад трактует ответы ему, я уже боюсь (не хочу) рассуждать свободно: разве в модуль может быть вложен в другой модуль (класс же может быть объявлен внутри другого класса)?
И я не уверен, что модуль это именно то, что нужно Владу: ему, как мне показалось, хочется иметь возможность декларировать константы (и методы и [не вижу причин не позволять] всё остальное) на уровне пространства имён, а не модуля. модуль же просто контейнер для типов и нужен не столько для логического разделения типов, сколько для физического (например если часть типов в нашей одной сборке собирается одним компилятором, а часть другим). Строго говоря, разница будет.

Логически же (как я и сам это понимаю) да, так почти и есть, об том я и сказал: реализовать то, чего не хватает Владу в каком-либо .NET-языке можно "фейковым" статическим классом (опять же строго говоря abstract sealed) в нужном пространстве имён: то, что Влад попросил можно самим сделать в виде скрытого от пользователя статического класса, расширения метаданных не требуется.

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

_FR>>чтобы пользователь ненароком не подключил бы что-то, что вызовет конфликты с другими определениями. А может и того хуже — не конфликты, а втихую перегрузка отработает не ожиданным для пользователя виде.

H>Механизмы разруливания конфликтов в виде extern alias в .NET представлены искаропки.

"extern alias" (если я правильно понял о чём речь) на сколько мне известно позволяет решать конфликты между именами типов (в одних и тех же пространствах имён) в различных сборках и я не вижу, как он бы помог тут.
Help will always be given at Hogwarts to those who ask for it.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.