c#日期时间变量未更新

c#日期时间变量未更新,c#,datetime,c#-4.0,c#-3.0,C#,Datetime,C# 4.0,C# 3.0,我有一个TimeNow变量更新当前时间,它工作正常,但今天我发现它没有更新值 private static readonly DateTime _TimeNow= DateTime.UtcNow; 这是变量,但现在TimeNow不更新该值。只读关键字是一个修饰符,可以在字段中使用。当字段声明包含只读修饰符时,对该声明引入的字段的赋值只能作为声明的一部分或在同一类的构造函数中进行 请删除readonly,然后重试 编辑:勾选此代码 Class TestClass{ private st

我有一个TimeNow变量更新当前时间,它工作正常,但今天我发现它没有更新值

private static readonly DateTime _TimeNow= DateTime.UtcNow;

这是变量,但现在TimeNow不更新该值。

只读关键字是一个修饰符,可以在字段中使用。当字段声明包含只读修饰符时,对该声明引入的字段的赋值只能作为声明的一部分或在同一类的构造函数中进行

请删除readonly,然后重试

编辑:勾选此代码

Class TestClass{

    private static DateTime _TimeNow;
    private static Timer timer;

    public TestClass(){
       timer = new Timer();
       timer.Interval = 1000;
       _TimeNow = DateTime.UtcNow; //don't forget this is a variable and not a timer
       timer.Tick = new EventHalndler(timer_tick);
       timer.Start();
    }
    private void timer_tick(object sender, EventArgs e){
       _TimeNow = DateTime.UtcNow;
 }

当您想获取当前时间时,每次都应该参考
DateTime.UtcNow

您发布的代码将只为“\u TimeNow”字段赋值一次。它不可能再分配它了

如果您在代码中的其他位置定期为字段指定新值,那么由于字段上的“readonly”属性,您的程序将无法编译

是什么让你认为字段的值应该改变?你的问题中缺少这样一个细节可能与你迄今为止收到的反对票有关

坦率地说,我质疑这样一个领域的价值。至少,当代码的任何其他部分读取该值时,它将没有“now”的正确值,因此该字段的名称不正确。

使用:

private static DateTime _TimeNow= DateTime.UtcNow;
而不是:

private static readonly DateTime _TimeNow= DateTime.UtcNow;

@Vishal为什么静态与此有关?您是否希望它随着时间的变化不断更新值?如果是这样的话,就不要使用_TimeNow,而是使用DateTime.UtcNow…对我的问题给予否定有什么意义?我不知道这一点,这就是为什么我在这里澄清我的疑虑,因为它以前工作过,但现在不工作了。如果你不喜欢我的问题,也不要回答it@BrianDishaw这就是我现在使用的,而不是声明一个变量,但在它正常工作之前,但现在不是这样。这就是我感到困惑的原因。您还需要显示定期为
\u TimeNow
设置新值的代码,以及导致代码周期性执行的过程。您所展示的代码本身只能执行您所描述的操作:设置值一次,而且只能设置一次。这就是我现在要做的,但我问了这个问题,因为以前它是这样工作的,但现在它不是,我想知道为什么它现在不工作时间设置为_TimeNow?您是否真的在任何地方更新代码中的变量?DateTime不是计时器或时钟。它只是简单地存储初始化时您给它的数字。您需要随时更新该变量。我会在一秒钟内用一些代码编辑我的帖子。