Страница 1 из 1

простой вопрос по C#

Добавлено: 19.05.2015 11:15
sergNN
вот есть
DateTime pStichtag, DateTime? pCalcDate, DateTime buchungsTagMatch

почему

Код: Выделить всё

DateTime buchungsTagMatch = pCalcDate.HasValue ? pCalcDate.Value : pStichtag;
или

Код: Выделить всё

DateTime  buchungsTagMatch = (null != pCalcDate) ? pCalcDate.Value : pStichtag;
не работает, зато вот это работает всегда:

Код: Выделить всё

if (null != pCalcDate)
{
  buchungsTagMatch = pCalcDate.Value;
}
else
{
  buchungsTagMatch = pStichtag;
}
не работает - значит в случае нулевого pCalcDate не присваивается pStichtag. Присваивается какая-то хрень по умолчанию.

Re: простой вопрос по C#

Добавлено: 19.05.2015 11:19
Джимми
вроде все правильно
может pStichtag неправильно инициализирован

Re: простой вопрос по C#

Добавлено: 19.05.2015 11:24
sergNN
это было б слишком просто...
С одними тест-данными проверял.
я сначала думал что я устал, позвал друга. теперь нас двое "уставших" :-)
чепуха какая-то...

Re: простой вопрос по C#

Добавлено: 19.05.2015 11:39
Джимми
сделай декомпиляцию
ILSpy

Re: простой вопрос по C#

Добавлено: 19.05.2015 12:53
sergNN
чтоб понять внутреннюю реализацию ?

Re: простой вопрос по C#

Добавлено: 19.05.2015 13:37
Igor V. Protsenko
DateTime buchungsTagMatch = ((null != pCalcDate) && pCalcDate.HasValue) ? pCalcDate.Value : pStichtag;

Re: простой вопрос по C#

Добавлено: 19.05.2015 14:02
sergNN
ха. ты расписал как надо писать, чтоб чисто работало присвоение pCalcDate,
а ты разъясни почему не работает присавоение pStichtag'a в случае когда pCalcDate есть NULL.