パスワードを忘れた? アカウント作成
この議論は、Ryo.F (3896)によって ログインユーザだけとして作成されたが、今となっては 新たにコメントを付けることはできません。
  • DBNullはC#/VBにNullable値もジェネリックメソッドもがなかった時代のADOの遺物で、「そのレコードにはNull値が格納されている」ことを示すために用意された型であって、Nullではないから。
    そしてDBNull.Valueは、みんながDBNullを個別にインスタンス化して使うと不経済だからコレを使ってね、というシングルトンへの参照であって、Null参照ではない。
    従ってBooleanに変換すればfalseに評価される。

    とは言えBooleanへの変換でfalseを返す型変換メソッドを定義していても良さそうなものだけど、
    DBNull.Valueの利点はEqualsメソッドによって任意の値がDBNullであるか否かを判別できる所にある。
    その中には当然Boolean型との比較もあり、その値はDB上ではNull許容1ビット整数として格納されていたものだろう。
    つまりnull値とfalse値が同一視されては困るわけで、DBNullは(ADOの文脈において)falseと評価されない方が良かったのだろう。

typodupeerror

アレゲは一日にしてならず -- アレゲ研究家

読み込み中...