У меня следующий код:
var dateFrom = DateTime.Parse(string.Format(string.Format("01.04.{0}", dateProperty.Value.AddYears(-1).Year))
if (object.nullablebool.HasValue ? object.nullablebool.Value : false
&& (string == "V" || string == "N")
&& someDate.HasValue && object.SomeOtherDate.HasValue
&& someDate.Value.Date > dateFrom.Date)
{
>> Code
}
Я тестировал добавление .Date или даже указание точного года из структуры DateTime, но ничего не получалось.
При выполнении кода, даже если
someDate.Value.Date > dateFrom.Date
равно 1700> 2018, код выполняется так, как если бы он был истинным, даже если отладчик говорит, что он ложный.
Когда я удалил эту часть из условия, следующий код:
someDate.HasValue && object.SomeOtherDate.HasValue
Когда я сделал someDate пустым, поэтому someDate.HasValue равно false, оператор if все еще выполняется как true.
Что это исправило?Приведение этих двух условий к другому, если:
var dateFrom = DateTime.Parse(string.Format(string.Format("01.04.{0}", dateProperty.Value.AddYears(-1).Year))
if (object.nullablebool.HasValue ? object.nullablebool.Value : false
&& (string == "V" || string == "N"))
{
if (someDate.HasValue && object.SomeOtherDate.HasValue
&& someDate.Value.Date > dateFrom.Date)
{
>> Code
}
else
{
>> Code
}
}
Код работает, но он слишком уродлив.Я работаю на Visual Studio 2017 Pro.Есть идеи, почему он так себя ведет?Выполнение ложных утверждений?Спасибо