2009-10-23 108 views
0

我想了解DateTimeNow属性的实现是如何工作的。我的背景主要是Python和Haskell,所以我不能理解Now属性如何根据您何时使用它来“返回”不同的值。C#:DateTime.Now如何只是一个属性?

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

+0

它是违反约定的框架中为数不多的地方之一(如果不是唯一的地方)... – Will 2009-10-23 12:27:49

回答

15

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

在封面下面,readonly属性只是一个返回值的函数调用,所以它可以执行任何数量的处理。

希望这会有所帮助。

+0

当然,我应该考虑一下!谢谢。 – 2009-10-23 11:43:29

+0

是的,'DateTime.Today','DateTime.UtcNow'也一样, – 2009-10-23 11:44:48

4

它不是一个属性,它是在DateTime类,看起来像下面这样的静态属性:

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

UtcNow是DateTime的另一个属性,返回如下:

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

GetSystemTimeAsFileTime是一个Windows API调用。

相关问题