2013-12-14 6 views

ответ

4

Ну MSDN четко говорится, что

Постоянное выражение является выражением, которое может быть в полной мере оценены в время компиляции. Поэтому единственными возможными значениями для констант ссылочных типов являются строки и null.

Из раздела 10.4 спецификации языка C#. Это типы, которые можно использовать.

Тип указано в постоянной декларации должна быть SByte, байт, короткий, USHORT, INT, UINT, длинные, ULONG, символ, с плавающей точкой, двойной, десятичной, BOOL, строка, перечисление типа, или ссылочный тип. Каждый постоянная выражение должно дать значение целевого типа или типа , которые могут быть преобразованы к целевому типу с помощью неявного преобразования

+0

Да, это раздел 10.4 в спецификации! Принимая это за правильность! – nawfal

0

В контексте C#, константа представляет собой тип поле или локальная переменная , значение которой установлено во время компиляции и никогда не может быть изменено при запуске времени. Он похож на переменную, имея имя, значение и ячейку памяти . Тем не менее, он отличается от переменной свойством , который может быть инициализирован только один раз в приложении. A константа объявляется с использованием ключевого слова "const".

Constants (C# Programming Guide)

Только C# встроенных типов (за исключением System.Object) может быть объявлен как константы. Список встроенных типов см. В разделе Built-In Types Table (C# Reference).

  • BOOL байты объект SByte символ десятичного двойной поплавок INT UINT долго ULONG коротких USHORT строки
+0

Я не думаю, что документация имеет смысл (spec) imo. 'System.Object' и любой другой ссылочный тип могут быть объявлены как' const' (за исключением того, что они указывают на null). – nawfal

1

Из MSDN:

Константы неизменных значений, которые известны во время компиляции и не изменяются жизнь программы. Константы объявляются с помощью модификатора const. Только встроенные типы C# (за исключением System.Object) могут быть объявлены как const. Список встроенных типов см. В разделе «Типы встроенных типов» (C# Reference). Пользовательские типы, включая классы, структуры и массивы, не могут быть const. Используйте модификатор readonly для создания класса, структуры или массива, который инициализируется один раз во время выполнения (например, в конструкторе) и после этого не может быть изменен.

C# не поддерживает методы, свойства или события const.

полная ссылка: http://msdn.microsoft.com/en-us/library/ms173119.aspx

+0

Я не думаю, что документация имеет смысл (spec) imo. 'System.Object' и любой другой ссылочный тип могут быть объявлены как' const' (за исключением того, что они указывают на null). – nawfal

Смежные вопросы