变量初始化一次,使用动态值。

3

我声明了一个常量变量,并将其存储在cookie中,这样做是可以的,因为不同的浏览器将拥有不同的副本。

private const string CookieName = "TempData";

现在我想将它存储在第三个位置,那里将存储所有用户数据。

那么我该如何声明类似于

private const string CookieName = "TempData" + DataTime.Now.Tick.tostring(); 以便每个用户都有不同的cookiename存储在第三个位置。

请给予建议。


我刚刚编辑了我的答案(之前是错误的),请看一下。这是你要找的吗? - Sweeper
2
你需要移除const关键字。这个变量在哪里声明的?如果你想为每个用户创建不同的cookie,为什么不使用用户名或用户本身的唯一ID创建cookie呢?这样会给你更多的控制权。 - Chetan
此时没有用户详细信息。 - Md. Parvez Alam
3个回答

1
你不能使用一个带有 const 修饰符的字段。任何带有 const 修饰符的内容必须在编译时能够被计算为常量。
你需要的是一个由静态构造函数初始化的静态字段。
public class YourSurroundingClass {
    private static readonly string CookieName;

    static YourSurroundingClass() {
        CookieName = "TempData" + DateTime.Now.Ticks
            .ToString();
    }
}

每当访问时都会生成新值。 - Md. Parvez Alam
不会的。静态构造函数只会运行一次。或者你是想说即使程序重新启动,它也要保持不变吗?那么你需要写入文件。@Md.ParvezAlam - Sweeper

0
如果你将一个变量定义为只读get,那么你可以在类的构造函数中设置它,但之后它就不能再被改变了。
public class MyClass
{
   private string CookieName { get; }

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

0

确实,您总是得到新的值。但是解决方法是根据您的要求将该值存储在数据库或文件中。

如果需要更多澄清,请联系我。 我在这里可用


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接