Лучше DateTime? или использовать значение по умолчанию (DateTime) для NULL?

Я ' m разработка веб-сайта C # / NHibernate с системой личных сообщений. Я хотел бы, чтобы администраторы проверяли, прочитано ли сообщение пользователем, и вместе выделяли те сообщения, которые еще не были прочитаны пользователями. Чтобы достичь того и другого, я нашел два варианта:

Вариант 1

class Message
{
    DateTime? Read;
}

где Чтение == null означает, что еще не прочитано

Вариант 2

class Message
{
    DateTime Read;
}

где Чтение == по умолчанию (DateTime ) (1 января 1 н.э., 0:00:00) означает еще не прочитал.

В университете меня учили использовать значение NULL для обработки всех специальных , а также использование типа, допускающего значение NULL , кажется хорошим выбором, поскольку ​​выглядит проще для запроса непрочитанных сообщений, проверяя, являются ли они NULL или нет.

Но, использование типов, допускающих значение NULL, включает как минимум упаковку и распаковку в коде, что снижает производительность. С другой стороны, запрос непрочитанных сообщений означает сравнение значения (но его можно проиндексировать)

Мой вопрос

Каков ваш предлагаемый подход для этого? Что в этом случае можно предложить передовой практикой?

13
задан usr-local-ΕΨΗΕΛΩΝ 27 January 2011 в 20:36
поделиться