C#

SqlDateTime構造体について

一般的に小さい型からより大きい型への(例えばshortからintへの)暗黙の型変換は慣例として受け入れられます。その型変換が安全だからです。

SqlDateTime構造体とDateTime構造体では、サイズとしてはSqlDateTime構造体のほうが大きいものになっていますが、データ範囲はDateTime構造体のほうが大きく、SqlDateTime構造体のデータ範囲はDateTime構造体のデータ範囲に含まれます。

このため、DateTime構造体からSqlDateTime構造体への型変換ではオーバーフローを起こす可能性があります。SqlDateTime構造体はDateTime構造体からSqlDateTime構造体への暗黙の型変換を許していますが、そのような型変換が暗黙的に行われるのは望ましいことではありません。プログラマに誤った認識を与え、結果的に作業を増やすことになるでしょう。