В C #, enum
необходимо иметь const
значения, определенные во время компиляции.В итоге, C # больше const
, чем C ++.
В C # const используется для обозначения константного выражения во время компиляции.Это было бы похоже на этот код C ++:
enum {
count = buffer.Length;
}
Поскольку buffer.Length
вычисляется во время выполнения, оно не является константным выражением, и поэтому это приведет к ошибке компиляции.
C # имеет ключевое слово readonly
, которое немного больше похоже на const
в C ++.(Тем не менее, он все еще более ограничен, и в C # нет такой вещи, как const-correctness).
const
предназначен для представления константы времени компиляции ... а не просто значения только для чтения.
Боюсь, вы не можете указывать локальные переменные, доступные только для чтения, но не зависящие от времени компиляции, в C #.Некоторые локальные переменные изначально доступны только для чтения - например, переменная итерации в цикле foreach
и любые переменные, объявленные в первой части оператора using
.Однако вы не можете создавать свои собственные переменные только для чтения.
Если вы используете const
в методе, это фактически заменяет любое использование этого идентификатора значением константы во время компиляции.
Итак, вам нужно определить ваши значения во время компиляции в вашем enum
.Они не могут быть оценены во время выполнения.Это правила.