Получение «Выражение должно быть постоянным», когда оно - PullRequest
22 голосов
/ 08 сентября 2011

Есть ли способ использовать что-то вроде этого:

private const int MaxTextLength = "Text i want to use".Length;

Я думаю, что это было бы более читабельно и менее подвержено ошибкам, чем использование чего-то вроде:

private const int MaxTextLength = 18;

Есть ли способы сделать длину текста источником постоянной переменной?

Ответы [ 5 ]

25 голосов
/ 08 сентября 2011
private readonly static int MaxTextLength = "Text i want to use".Length;
17 голосов
/ 08 сентября 2011

Используйте static readonly вместо const.

Константы должны быть константами времени компиляции

11 голосов
/ 08 сентября 2011

К сожалению, если вы используете ключевое слово const, значение справа от '=' должно быть константой времени компиляции. Использование «string» .length требует выполнения кода .NET, который может происходить только во время работы приложения, а не во время компиляции.

Вы можете сделать поле доступным только для чтения, а не const.

1 голос
/ 08 сентября 2011

Должно ли значение быть константой? Будет ли статическое чтение только для вашего случая?

private static readonly int MaxTextLength = "Text i want to use".Length;

Это позволит вам написать код аналогично первому примеру.

0 голосов
/ 08 сентября 2011

Не знаю, почему вы хотите это сделать, но как насчет ...

private const string MaxText = "Text i want to use.";

private static int MaxTextLength { get { return MaxText.Length; } }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...