C# 使用动态值初始化一次变量
我声明了一个常量变量,它存储在cookie中,所以它是Ok的,因为不同的浏览器将有不同的副本C# 使用动态值初始化一次变量,c#,.net,asp.net-mvc,constants,C#,.net,Asp.net Mvc,Constants,我声明了一个常量变量,它存储在cookie中,所以它是Ok的,因为不同的浏览器将有不同的副本 private const string CookieName = "TempData"; 现在我想将它存储在第三个位置,所有用户数据都将存储在这个位置 那么我怎样才能申报类似的东西呢 私有常量字符串CookieName=“TempData”+DataTime.Now.Tick.tostring(); 这样每个用户将在第三个位置存储不同的网络cookiename 请告知。如果您仅将变量定义为get,则
private const string CookieName = "TempData";
现在我想将它存储在第三个位置,所有用户数据都将存储在这个位置
那么我怎样才能申报类似的东西呢
私有常量字符串CookieName=“TempData”+DataTime.Now.Tick.tostring();
这样每个用户将在第三个位置存储不同的网络cookiename
请告知。如果您仅将变量定义为
get
,则可以在类的构造函数中对其进行设置,但此后将无法更改
public class MyClass
{
private string CookieName { get; }
public MyClass()
{
CookieName = "TempData" + DateTime.Now.Ticks.ToString();
}
}
为此,不能使用
常量
字段。任何带有const
修饰符的内容都必须能够在编译时计算为常量
您需要的是由静态构造函数初始化的静态字段
public class YourSurroundingClass {
private static readonly string CookieName;
static YourSurroundingClass() {
CookieName = "TempData" + DateTime.Now.Ticks
.ToString();
}
}
事实上,你总是得到新的价值。不过,解决方法是,您可以根据需要将值存储在DB或文件中 向我伸出手来。如果需要进一步澄清。
我刚刚编辑了我的答案(那是错误的),请看一看。这就是你要找的吗?你需要删除const关键字。这个变量在哪里声明?如果您想为每个用户创建不同的cookie,那么为什么不使用用户本身的用户名或唯一id创建cookie呢。这会给你更多的控制权。在这一点上没有用户详细信息。只要access生成新值,它就会再次出现。不,它不会。静态构造函数将只运行一次。或者你的意思是,即使你的程序重新启动,你也希望它保持不变?为此,您需要写入一个文件@帕维扎拉姆博士