C #: Как DateTime.Now может быть просто атрибутом? - PullRequest
0 голосов
/ 23 октября 2009

Я пытаюсь понять, как работает реализация атрибута Now в DateTime. В основном я работаю с Python и Haskell, поэтому я не могу понять, как атрибут Now может «возвращать» разные значения в зависимости от того, когда вы его используете.

Моя интуиция говорит, что Now действительно должна быть функцией, которая выполняет магию низкого уровня, затем магию высокого уровня, а затем возвращает объект DateTime с правильным временем.

Ответы [ 2 ]

15 голосов
/ 23 октября 2009

DateTime.Now не является атрибутом, это статическое свойство только для чтения.

Под прикрытием свойство readonly - это просто вызов функции, который возвращает значение, поэтому он может выполнять любую обработку, какую захочет.

Надеюсь, это поможет.

4 голосов
/ 23 октября 2009

Это не атрибут, это статическое свойство класса DateTime, которое выглядит следующим образом:

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

UtcNow - это другое свойство DateTime, которое возвращает следующее:

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

GetSystemTimeAsFileTime - это вызов API Windows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...