.NETにはnull
、オブジェクト参照が空であることを示すためにどこでも使用される参照があります。次に、DBNull
データベースドライバー(および他のいくつか)によって使用される参照があります...ほとんど同じことを示します。当然、これは多くの混乱を引き起こし、変換ルーチンを解き放つ必要があります。
では、なぜ元の.NET作成者がこれを作成することにしたのでしょうか。私にはそれは意味がありません。彼らのドキュメントも意味がありません:
DBNullクラスは、存在しない値を表します。たとえば、データベースでは、テーブルの行の列にデータがまったく含まれていない場合があります。つまり、列は単に値を持たないのではなく、まったく存在しないと見なされます。DBNullオブジェクトは、存在しない列を表します。さらに、COM相互運用機能はDBNullクラスを使用して、存在しない値を示すVT_NULLバリアントと、指定されていない値を示すVT_EMPTYバリアントを区別します。
「列が存在しない」についてのこのがらくたは何ですか?列が存在しますが、特定の行の値がありません。存在しなかった場合、DBNull
!ではなく、特定のセルにアクセスしようとすると例外が発生します。VT_NULL
とを区別する必要があることは理解できますが、代わりにクラスをVT_EMPTY
作成してみませんか?COMEmpty
これは、.NETFramework全体に非常にうまく適合します。
私は何かが足りないのですか?なぜDBNull
発明されたのか、それがどのような問題を解決するのに役立つのか、誰かが光を当てることができますか?