Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在多线程环境中将变量声明为静态属性_C# - Fatal编程技术网

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

C# 如何在多线程环境中将变量声明为静态属性,c#,C#,开始日期用于多个位置,默认为某个值 我可以将其声明为或常量或静态属性吗 DateTime dtStart = DateTime.Now.AddYears(-2).AddMonths(-1).ToShortDateString(); 编辑 我没有提到我想知道它在多线程环境中的行为,并将数据类型更改为字符串。它不能是常量,因为值会更改。您可以轻松地将其设置为类中的静态属性: public static string StartDate { get { return

开始日期用于多个位置,默认为某个值

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

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


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

它不能是常量,因为值会更改。您可以轻松地将其设置为类中的静态属性:

public static string StartDate
{
    get
    {
        return DateTime.Now.AddYears(-2).AddMonths(-1).ToShortDateString();
    }
}
注意:为了使测试代码更容易,应该将开始日期传递给方法,而不是让它们都调用此属性

DateTime dtStart = DateTime.Now.AddYears(-2).AddMonths(-1).ToShortDateString();
另外,您希望它返回一个字符串,这似乎很奇怪


对于多线程,每个线程都将调用这个属性本身。由于该属性不修改任何状态,这将很好。

如果项目中存在一个类static,请尝试使用该类

 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();

为什么你们不试着做你们描述的事情,看看会发生什么呢?常量和静态属性是两码事。不能更改常量,但可以更改静态属性。你到底想问什么?顺便说一句,ToSortDateString将返回一个字符串,而不是DateTime对象,对于如何正确提问还不熟悉?它实际上对我有用。但我怀疑它在多线程环境中是如何工作的。@Sunny:如果您能提到多线程似乎在您的问题中的某个地方,那么多线程在您的问题中是非常重要的。您的意思是我需要一个像GetStartDate这样的方法并返回值,这会很有帮助。