[解決済み] nullとSystem.DBNull.Valueの違いは何ですか?
質問
nullとSystem.DBNull.Valueの間に違いはありますか?もしあるならば、それは何ですか?
私は今、この動作に気づきました - 。
while (rdr.Read())
{
if (rdr["Id"] != null) //if (rdr["Id"] != System.DBNull.Value)
{
int x = Convert.ToInt32(rdr["Id"]);
}
}
sql datareaderを使ってデータベースからデータを取得する間、値が返されないが
if(rdr["Id"] != null)
返された
true
を返し、最終的にはnullを整数としてキャストしたために例外が投げられました。
しかし、これはもし私が
if (rdr["Id"] != System.DBNull.Value)
は
false
.
nullとSystem.DBNull.Valueの違いは何ですか?
どのように解決するのですか?
さて
null
はどの型のインスタンスでもありません。むしろ、それは無効な参照です。
しかし
System.DbNull.Value
のインスタンスへの参照は有効です。
System.DbNull
(
System.DbNull
はシングルトンであり
System.DbNull.Value
はそのクラスのシングルインスタンスへの参照を与えます)、それは存在しない
*
の値を表します。
*通常、私たちは次のように言います。
null
と言いますが、問題を混乱させないようにするためです。
というわけで、この2つには大きな概念の違いがあります。キーワード
null
は無効な参照を表します。クラス
System.DbNull
はデータベースのフィールドに存在しない値を表します。一般に、同じもの(この場合は
null
を使用することは避けるべきです。
これが、多くの人が
null オブジェクト パターン
を使うことを提唱しているのは、まさにこのためです。
System.DbNull
はその一例です。
関連
-
[解決済み】Ajax処理で「無効なJSONプリミティブ」と表示される件
-
[解決済み】Excel "外部テーブルが期待された形式ではありません。"
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] JavaScriptで空文字列/未定義文字列/null文字列をチェックするにはどうすればよいですか?
-
[解決済み] JavaScriptでNULL、未定義、空白の変数をチェックする標準的な関数はありますか?
-
[解決済み] 変数が「未定義」または「NULL」であるかどうかを判断するにはどうすればよいですか?
-
[解決済み] C#のconstとreadonlyの違いは何ですか?
-
[解決済み] JavaScriptのnullとundefinedの違いは何ですか?
-
[解決済み] フィールドとプロパティの違いは何ですか?
-
[解決済み] nullはなぜオブジェクトなのか、nullとundefinedの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】コンパイルエラー「未割り当てのローカル変数を使用しています」が発生したのはなぜですか?
-
[解決済み] 保護レベルによりアクセス不能になりました。
-
[解決済み】パディングが無効で、削除できない?
-
[解決済み】C# ASP.NET使用時に「WebClientのリクエスト中に例外が発生しました。
-
[解決済み] 'IEnumerable<SelectListItem>' 型の ViewData アイテムで、キーが国であるものは存在しない。
-
[解決済み] [Solved] 不正な文字列値: '\xEFxBFxBD' for column
-
[解決済み】OnCollisionEnter2Dが実行されない?
-
[解決済み】5.7.57 SMTP - MAIL FROMエラー時に匿名メールを送信するためにクライアントが認証されない
-
[解決済み】2つ(またはそれ以上)のリストを1つに統合する(C# .NETで
-
[解決済み】別のスレッドがこのオブジェクトを所有しているため、呼び出し側のスレッドはこのオブジェクトにアクセスできない