Re: Константы. Класс или структура?
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.05.24 14:09
Оценка: 6 (1) +1
Здравствуйте, Разраб, Вы писали:

Р>Эти конструкции эквивалентны или нет?


Эквивалентны, если речь идет о доступе к константе. В данном случае и класс, и структура выступают в роли пространства имен для константы, а в код (где используется константа) подставляется её значение (т.е. сама константа инлайнится).

Неэквивалентны, если речь идет о переменной данного типа. Класс будет размещен в хипе, а структура в стеке (или в хипе при боксинге). Но константа тогда тут не причем.

Маразм Шарпа в том, что в нем нельзя объявить константу вне типа и тип используется в качестве пространства имен. По уму можно было допустить объявление:
namespace X
{
  public const int Zero = 0;
}


Но тогда CLR пришлось бы расширять первоклассной сущностью — константой. На этом решили сэкономить допустив только типы.

По той же причине сделали маразм с отсутствием глобальных функций (не методов).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Отредактировано 29.05.2024 14:10 VladD2 . Предыдущая версия . Еще …
Отредактировано 29.05.2024 14:09 VladD2 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.