私は、プライベートメッセージングシステムを備えたC#/ NHibernate Webサイトを設計しています。私は管理者に、メッセージがユーザーによって読み取られたかどうかをチェックし、ユーザーがまだ読み取っていないメッセージを一緒に強調表示したいと思います。より良いDateTime? NULLにはデフォルト(DateTime)を使用しますか?
オプション1
Read==null
はまだ
オプション2
class Message
{
DateTime Read;
}
Read==default(DateTime)
(1月1日1つのAD、0を読まないことを意味
class Message
{
DateTime? Read;
}
:両方を達成するために、私は2つのオプションを発見しました:00:00)はまだ読み込まれていないことを意味します。
大学で、私はすべての特別例を処理するためにNULL
値を使用するように教えられてきた、そしてそれはのかどうかをチェックすることにより、未読メッセージを照会するが容易になりますので、また、NULL可能タイプを使用すると、良い選択です彼らはNULL
かどうかです。
しかし、null可能な型を使用するには、少なくともパフォーマンスが低下するコードでボクシングとアンボックスが必要です。一方、未読メッセージを照会することは
私の質問は
あなたの提案のアプローチは、この何のためにあるのです(しかし、それはインデックスを作成することができます)の値を比較する意味しますか?この場合、ベストプラクティスは何を示唆しますか?
このバージョンは、(他の条件が正しいと仮定している 'NULL可能'缶)スタック割り当てを活用することができなくなり、それはカプセル化しないが、これは、 'NULL可能 'を使用することに意味的に等価です論理は単一のメンバーになります。 –
@Adam Robinson、大部分は同意します。 1人のメンバーを使うことは、質問の前提条件だとは思っていませんでした(私はそれが暗示されていると思います)。そして、2つの情報を1つのフィールドにカプセル化しないことによって、私はスタックの割り当てポイントに従っていません - あなたはこれを展開できますか? – Brett
これは前提条件ではありませんでしたが、2人ではなく1人のメンバーでエラーのないCRUD操作を実行する方が簡単です。私はスタック割り当てについて知らなかった:ポイントは、null可能な値がヒープに割り当てられていると思った点です!とにかく、私の質問はベストプラクティスに集中していました。 –