Тернарная функция не равна if при DateTime?

168
23 марта 2019, 17:10

Сегодня столкнулась вот с такой проблемой. Почему If и тернарная функция не равны. Это работает:

     public class EmployeeClass
    {
        private DateTime? _Birthday;public DateTime? Birthday => _Birthday;
        public EmployeeClass(SPListItem item, SPList list)
        {
            if (item["Fld_EmployeeBirthday"] != null)
            {
                _Birthday = DateTime.Parse(item["Fld_EmployeeBirthday"].ToString());
            }
            else
            {
                _Birthday = null;
            }
        }
    }

Это не работает:

_Birthday = item["Fld_EmployeeBirthday"] != null ? DateTime.Parse(item["Fld_EmployeeBirthday"].ToString()) : null;

Answer 1

У _Birthday тип DateTime, ты пытаешься привести DateTime к null или DateTime. Поэтому тип DateTime необходимо обозначить как Nullable с помощью знака вопроса после типа. А null привести к Nullable Что то должно быть вроде того:

DateTime? _Birthday; // Nullable<DateTime>
_BirthDay = <условие> ? Значение с типом DateTime : (DateTime?) null // null приводим к Nullable<DateTime>
READ ALSO
Как сгладить Polyline в WPF?

Как сгладить Polyline в WPF?

У меня есть в WPF область Grid, где я задаю множество точек в PointCollection и добавляю это в PolylineПолучаю, соответственно, ломаную кривую

189
Как вывести имя переменной массива

Как вывести имя переменной массива

Имеется массив из переменных

152
Пользователь отменил действие

Пользователь отменил действие

Еще рас всем доброго времени суток Возникла такая проблема (WPF)Есть обработчик нажатия, он выполняется, то есть запускает файл на установку,...

132