2009-10-23 144 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調用。

相關問題