我正在尝试了解Now
中DateTime
属性的实现方式。我的背景主要是Python和Haskell,所以我不能理解Now
属性如何根据您何时使用它来“返回”不同的值。
我的直觉说Now
应该是一个函数,它会执行一些低级魔法,然后是一些高级魔法,然后以正确的时间返回一个DateTime对象。
答案 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调用。