DateTime.Now и NullReferenceException - PullRequest
       0

DateTime.Now и NullReferenceException

1 голос
/ 18 февраля 2010

В моем бизнес-объекте мне нужно получить текущий час (DateTime с минутами и секундами = 0).

Я создал такую ​​функцию:

private DateTime GetCurrentHour() 
{ 
        return DateTime.Today.AddHours(DateTime.Now.Hour); 
} 

Если яиспользовать его таким образом

var lastHour=GetCurrentHour();

Я получаю исключение NullReferenceException ????

Использование в той же функции следующим образом:

var ora = new NHRepository<OraProduzione>(Session) 
               .First(x => x.Data == GetCurrentHour().AddHours(-1)); 

Я не получаю исключения Почему?

Это трассировка стека:

   in ImpelSystems.Produzione.Business.Calendario.TimerWakeUp() in \Calendario.cs:riga 115
   in ImpelSystems.Produzione.Business.Calendario.<.ctor>b__1(Object x) in \Calendario.cs:riga 78
   in System.Threading._TimerCallback.TimerCallback_Context(Object state)
   in System.Threading.ExecutionContext.runTryCode(Object userData)
   in System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
   in System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
   in System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   in System.Threading._TimerCallback.PerformTimerCallback(Object state)

TimerWakeUp выполняется на таймере, созданном с помощью

timer = new System.Threading.Timer(x => TimerWakeUp(), null, new TimeSpan(0, 0, 0, 10), new TimeSpan(0, 0, 0, 10));

1 Ответ

1 голос
/ 18 февраля 2010

Вы уверены, что ваше исключение на var lastHour=GetCurrentHour();?Тип DateTime - это структура, которая должна сделать невозможным (если я что-то упустил) невозможность встретить нулевую ссылку.

Кроме того, я предполагаю, что вы имели в виду DateTime.Today.AddHours(DateTime.Now.Hour), так какToday свойство является статическим, поэтому вы не можете получить к нему доступ из экземпляра, возвращенного из Now.

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