如何在多线程环境中将变量声明为静态属性

本文关键字:声明 变量 静态 属性 多线程 环境 | 更新日期: 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();