首頁 > 後端開發 > C++ > 如何處理 C# 中的「無法隱式地將 DBNull 轉換為 Int」錯誤?

如何處理 C# 中的「無法隱式地將 DBNull 轉換為 Int」錯誤?

Patricia Arquette
發布: 2025-01-10 22:57:48
原創
123 人瀏覽過

How to Handle

無法隱式轉換DBNull為Int?

程式碼片段中出現錯誤:「無法從DBNull隱式轉換為int」。這是由於?:運算子的性質造成的,因為它要求其計算的表達式的類型相同。

在本例中,第一個表達式(AgeItem.AgeIndex)是整數,而第二個表達式(DBNull.Value)是DBNull型別。這些類型不相容,導致錯誤。

解決方案:強制轉換為物件或使用空合併運算子

要解決此問題,您可以選擇以下兩種方法:

  • 強制轉換為物件: 將AgeItem.AgeIndex強制轉換為object類型,該類型可以容納整數和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,則傳回第二個表達式的值。這可以用來在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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板