C#:DateTime.Now如何只是一个属性?

时间:2009-10-23 11:40:04

标签: c# datetime

我正在尝试了解NowDateTime属性的实现方式。我的背景主要是Python和Haskell,所以我不能理解Now属性如何根据您何时使用它来“返回”不同的值。

我的直觉说Now应该是一个函数,它会执行一些低级魔法,然后是一些高级魔法,然后以正确的时间返回一个DateTime对象。

2 个答案:

答案 0 :(得分:15)

DateTime.Now不是属性,它是静态只读属性。

在封面下,readonly属性只是一个返回值的函数调用,因此它可以进行任何想要的处理。

希望这有帮助。

答案 1 :(得分:4)

它不是属性,它是DateTime类的静态属性,如下所示:

public static DateTime Now
{
    get
    {
        return UtcNow.ToLocalTime();
    }
}

UtcNow是DateTime上的另一个属性,它返回以下内容:

return new DateTime((ulong) ((GetSystemTimeAsFileTime() + 
  0x701ce1722770000L) | 0x4000000000000000L));

GetSystemTimeAsFileTime是Windows API调用。