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

时间:2014-04-09 19:58:16

标签: c#

开始日期用于多个地方,默认为某个值。

我可以将其声明为或常量或静态属性。

DateTime dtStart = DateTime.Now.AddYears(-2).AddMonths(-1).ToShortDateString();

修改

string dtStart = DateTime.Now.AddYears(-2).AddMonths(-1).ToShortDateString();

我没想提到我想知道它在多线程环境中的行为,并将数据类型更改为字符串。

2 个答案:

答案 0 :(得分:0)

由于值的变化,它不能是常数。您可以轻松地将其作为类中的静态属性:

public static string StartDate
{
    get
    {
        return DateTime.Now.AddYears(-2).AddMonths(-1).ToShortDateString();
    }
}

注意:为了更容易测试代码,您应该将方法传递给开始日期,而不是让它们都调用此属性。

此外,您希望此返回字符串似乎很奇怪......

对于多线程,每个线程都会调用此属性本身。这样会很好,因为该属性不会修改任何状态。

答案 1 :(得分:0)

如果项目中存在

,请尝试使用一个类静态
 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();