如何在多线程环境中将变量声明为静态属性
本文关键字:声明 变量 静态 属性 多线程 环境 | 更新日期: 2023-09-27 17:57:35
开始日期用于多个位置,并且默认为某个值。
我可以将其声明为或常量或静态属性吗。
DateTime dtStart = DateTime.Now.AddYears(-2).AddMonths(-1).ToShortDateString();
编辑
string dtStart = DateTime.Now.AddYears(-2).AddMonths(-1).ToShortDateString();
我没有提到我想知道它在多线程环境中的行为,并将数据类型更改为字符串。
由于值发生变化,所以它不能是常量。您可以很容易地将其作为类中的静态属性:
public static string StartDate
{
get
{
return DateTime.Now.AddYears(-2).AddMonths(-1).ToShortDateString();
}
}
注意:为了更容易地测试代码,您应该将开始日期传递给方法,而不是让它们都调用此属性。
此外,你想让它返回一个字符串似乎很奇怪。。。
至于多线程,每个线程都会调用这个属性本身。这将是好的,因为属性不会修改任何状态。
如果项目中存在,请尝试使用一个静态类
public static class Uitl {
public static DateTime DateStart = default(DateTime);
public Uitl (){
if(DateStart == default(DateTime))
DateStart = DateTime.Now.AddYears(-2).AddMonths(-1);
}
}
或使用
Session["DateStart"] = DateTime.Now.AddYears(-2).AddMonths(-1).ToShortDateString();