не удается неявно преобразовать тип System.Датавремя? системы.значение datetime
когда я делаю следующее Я:
inv.RSV = pid.RSVDate
Я получаю следующее: невозможно неявно преобразовать тип System.Датавремя? системы.значение datetime.
в этом случае inv.RSV-это DateTime и pid.RSVDate-это DateTime?
я попробовал следующее, но не удалось:
if (pid.RSVDate != null)
{
inv.RSV = pid.RSVDate != null ? pid.RSVDate : (DateTime?)null;
}
Если pid.RSVDate имеет значение null, мне нравится не назначать inv.RSV ничего, в этом случае это будет null.
5 ответов
DateTime не может быть null. По умолчанию это DateTime.MinValue
.
что вы хотите сделать, это следующее:
if (pid.RSVDate.HasValue)
{
inv.RSV = pid.RSVDate.Value;
}
или, короче:
inv.RSV = pid.RSVDate ?? DateTime.MinValue;
вам нужно сделать RSV
свойство nullable тоже или выберите значение по умолчанию для случая, когда RSVDate
равно null.
inv.RSV = pid.RSVDate ?? DateTime.MinValue;
потому что inv.RSV не является нулевым полем, оно не может быть нулевым. Когда вы инициализируете свой объект, это inv по умолчанию.RSV к пустому DateTime, то же самое, что вы получили бы, если бы сказали
inv.RSV = new DateTime()
Итак, если вы хотите установить inv.РСВ пид.RSV если это не NULL или значение DateTime по умолчанию равно null, сделайте следующее:
inv.RSV = pid.RSVDate.GetValueOrDefault()
если тот, который назначается в качестве DateTime
и назначенный от DateTime?
, вы могли бы использовать
int.RSV = pid.RSVDate.GetValueOrDefault();
это поддерживает перегрузку, которая позволяет задать значение по умолчанию, если значение по умолчанию для DateTime
не подходит.
если pid.RSVDate имеет значение null, мне нравится не назначать inv.RSV все, в чем case это будет null.
int.RSV
не будет null, как вы уже сказали это DateTime
, не nullable тип. Если он никогда не назначается вами, он будет иметь значение по умолчанию его типа, которое является DateTime.MinValue
, или 1 января 0001.
inv.RSV был нулевым для начала. Как сказать, не обновляйте его, для pid нет значения.RSVDate
опять же, это просто не может быть, учитывая ваше описание имущества. Однако, если вообще говоря, вы не хотите обновлять inv.RSV
если pid.RSVDate
равно null (и вы просто путаетесь в своем слова), то вы просто напишете if
проверьте назначение.
if (pid.RSVDate != null)
{
inv.RSV = pid.RSVDate.Value;
}
pid.RSVDate
может быть null
, тогда как inv.RSV
нет, что произойдет, если RSVDate
is null
?
вам нужно проверить, является ли значение null перед -
if(pid.RSVDate.HasValue)
inv.RSV = pid.RSVDate.Value;
но что бы значение inv.RSV быть, если RSVDate равно null? Есть ли всегда будет ли дата в этом отеле? Если это так, вы можете использовать ??
оператор присвоения значения по умолчанию, если вы хотите.
pid.RSV = pid.RSVDate ?? myDefaultDateTime;