В вашем коде есть синтаксическая ошибка, поскольку DateTime допускает значение NULL? не имеет перегрузки ToString()
, которая принимает параметр строкового формата, поэтому вам нужно получить .Value
из обнуляемого, чтобы превратить обнуляемый в нормальный DateTime, прежде чем вы сможете его отформатировать
Чтобы ответить ваш конкретный c вопрос об условном null, тогда это будет примерно так:
(movie.ReleaseDate.HasValue ? movie.ReleaseDate.Value.ToString("dd-MMM-yyyy") : "Not Yet"
Форма Альсейна с использованием null coalesce намного более читабельна, чем использование условного null, но его выбор сказать, что mov ie был выпущен сегодня, если дата выпуска равна нулю, для меня это не имеет смысла. Я бы сказал, что нам нужен способ превратить его в строку даты, только если она имеет значение, и превратить ее в некоторую другую строку, если она равна нулю.
Учтите:
movie.ReleaseDate?.ToString("dd-MMM-yyyy") ?? "Not Yet"
Если дата выпуска равна нулю. ToString
не будет вызываться, а c# сразу перейдет к ??
с нулевым результатом. ??
затем превратит ноль в строку «Еще нет», что, как я полагаю, может означать нулевая дата выпуска ..
?
также работает неким c с обнуляемыми , превращая его в DateTime
, если он имеет значение , поэтому более раннее «DateTime?
не имеет ToString(string)
» не применяется; к моменту вычисления movie.ReleaseDate?
результатом будет либо null, либо нормальный DateTime с ToString, который принимает формат
??
, таким образом, хороший способ дать значение по умолчанию для цепочки вызовы, любой из которых может быть нулевым и защищен от выдачи нулевой ссылки во многих случаях использования оператора ?
:
notnull.MaybeNull?.MayAlsoBeNull?.Something ?? DefaultThing
Также подумайте, следует ли вам форматировать дату для пользователя, используя этот фиксированный способ , или было бы разумнее использовать типичный для их страны формат даты и представлять дату в разных форматах для разных посетителей сайта
Посмотрите что-то вроде этого или , возможно, это о том, как заставить ваш код использовать объявление языка пользователя для предоставления специфики культуры c форматирование для таких вещей, как даты и числа