Переменная инициализируется один раз с динамическим значением - PullRequest
0 голосов
/ 26 апреля 2018

Я объявил постоянную переменную, которая хранится в cookie, так что все в порядке, потому что другой браузер будет иметь другую копию.

private const string CookieName = "TempData";

Теперь я хочу сохранить ее в третьем месте, где все пользовательские данные будутбыть сохраненным.

Итак, как мне объявить что-то вроде

приватная константная строка CookieName = "TempData" + DataTime.Now.Tick.tostring ();Чтобы каждый пользователь имел различное кулинарное имя, сохраненное в третьем месте.

Пожалуйста, сообщите.

Ответы [ 3 ]

0 голосов
/ 26 апреля 2018

Для этого нельзя использовать поле const.Все, что имеет модификатор const, должно быть в состоянии вычислить константу во время компиляции.

Вам нужно статическое поле, инициализируемое статическим конструктором

public class YourSurroundingClass {
    private static readonly string CookieName;

    static YourSurroundingClass() {
        CookieName = "TempData" + DateTime.Now.Ticks
            .ToString();
    }
}
0 голосов
/ 26 апреля 2018

Действительно, вы всегда получаете новое значение.Однако обходной путь - вы можете сохранить значение в БД или в файле в соответствии с вашими требованиями.

Обратитесь ко мне.ЕСЛИ требуется больше разъяснений. Я доступен здесь

0 голосов
/ 26 апреля 2018

Если вы определяете переменную только как get, тогда вы можете установить ее в конструкторе вашего класса, но после этого она никогда не будет изменена.

public class MyClass
{
   private string CookieName { get; }

   public MyClass()
   {
      CookieName = "TempData" + DateTime.Now.Ticks.ToString();
   }
}
...