ホームページ >バックエンド開発 >C++ >C# で「DBNull を Int に暗黙的に変換できません」エラーを処理する方法は?

C# で「DBNull を Int に暗黙的に変換できません」エラーを処理する方法は?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-10 22:57:48184ブラウズ

How to Handle

DBNull を暗黙的に Int に変換することはできませんか?

コード スニペットのエラー: 「DBNull から int に暗黙的に変換できません」。これは、?: 演算子の性質によるもので、評価する式が同じ型である必要があります。

この例では、最初の式 (AgeItem.AgeIndex) は整数ですが、2 番目の式 (DBNull.Value) は DBNull 型です。これらの型には互換性がないため、エラーが発生します。

解決策: オブジェクトにキャストするか、null 合体演算子を使用します

この問題を解決するには、2 つのオプションがあります:

  • オブジェクトにキャストします: AgeItem.AgeIndex をオブジェクト型にキャストします。これは整数と DBNull 値に対応できます:
<code class="language-csharp">SqlParameter[] parameters = new SqlParameter[1];     
SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int);
planIndexParameter.Value = (object)AgeItem.AgeIndex ?? DBNull.Value;
parameters[0] = planIndexParameter; </code>
  • null 合体演算子 (??) を使用します: ??null 合体演算子は、最初の式が null でない場合は最初の式の値を返し、2 番目の式の値を返します。 。これは、AgeItem.AgeIndex が null の場合に DBNull.Value を割り当てるために使用できます:
<code class="language-csharp">SqlParameter[] parameters = new SqlParameter[1];     
SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int);
planIndexParameter.Value = AgeItem.AgeIndex ?? DBNull.Value;
parameters[0] = planIndexParameter; </code>

これらのソリューションを使用すると、型変換エラーが発生することなく、整数または DBNull.Value を SqlParameter に割り当てることができます。

以上がC# で「DBNull を Int に暗黙的に変換できません」エラーを処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。