Ошибка компилятора CS0283 указывает, что только базовые типы POD (а также строки, перечисления и нулевые ссылки) могут быть объявлены как const
. Кто-нибудь имеет теорию об обосновании этого ограничения? Например, было бы неплохо объявить значения const других типов, например IntPtr.
Я считаю, что концепция const
на самом деле является синтаксическим сахаром в С# и что он просто заменяет любое использование имени с литеральным значением. Например, с учетом следующего объявления любая ссылка на Foo будет заменена на "foo" во время компиляции.
const string Foo = "foo";
Это исключает любые изменяемые типы, поэтому, возможно, они выбрали это ограничение, вместо того, чтобы определять во время компиляции, является ли данный тип изменяемым?