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这样的方法并返回值,这会很有帮助。