asp.nep mvc: установка значений из текущего httpcontext в постоянные переменные - PullRequest
1 голос
/ 24 октября 2019

Привет, я в настоящее время работаю над приложением asp.net, и у меня есть класс, в котором мне нужно проверить, существует ли специальный cookie в текущем контексте. Пока это работает нормально, однако мне кто-то сказал, что было бы лучше иметь булевские проверки, как константы, следующим образом:

const bool labelcookieexists = HttpContext.Current.Request.Cookies.AllKeys.Contains("MyCookie");

Однако intellisense начинает жаловаться, когда я делаю это,и говорит, что выражение не является константой.

Может кто-нибудь объяснить, могут ли вещи из текущего httpcontext быть объявлены как константы. Я не очень понимаю, почему он не может себя

Большое спасибо

Ответы [ 2 ]

2 голосов
/ 24 октября 2019

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

ваше правое выражение будет возвращать значения во время выполнения, поэтому вы не можете присвоить его константе. это требует значений во время компиляции, что является причиной вашей ошибки.

вы можете использовать только для чтения, которые поддерживают постоянную времени выполнения.

private readonly static bool labelcookieexists = System.Web.HttpContext.Current.Request.Cookies.AllKeys.Contains("MyCookie");
0 голосов
/ 24 октября 2019

A константа - это значение, которое навсегда останется неизменным на протяжении всего жизненного цикла приложения. И поскольку вы читаете значение из файла cookie, даже если оно один раз, это означает, что это значение не является константой ... Используйте readonly

...