私は次のC#コードを持っています:
sqlCommand.Parameters.AddWithValue("@Parameter", table.Value ?? DBNull.Value);
ただし、次のコンパイルエラーがスローされます。
タイプおよびタイプのオペランドに演算子
??を適用することはできませんstringSystem.DBNull
コンパイラがこの構文を許可しないのはなぜですか?
両方のオペランドはオブジェクトである必要があります。明示的なキャストを使用します。
(object)table.Value ?? DBNull.Value;
    stringとの間には自動変換がないSystem.DBNullため、キャストを追加して明示的に必要なタイプを指定する必要がありますobject。
sqlCommandObject.Parameters.AddWithValue("@Parameter",
                                         table.Value ?? (object)DBNull.Value);
    DBNull.Valueを使用する代わりに、Convert.DBNullを使用できます。
sqlCommand.Parameters.AddWithValue("@Parameter", table.Value ?? Convert.DBNull);
舞台裏では、基本的に他の例で述べたのと同じ/類似したことをしていると思います(つまり、DBNullをオブジェクトにキャストします)が、少し単純/簡潔になります。
stringこれは、との間に暗黙の変換がないためSystem.DBNullです。
別の回避策は、を利用することSqlString.Nullです。
元:command.Parameters.Add(new SqlParameter("@parameter", parameter ?? SqlString.Null));
各タイプには独自のバージョンがあります。  SqlGuid.Null、、SqlDateTime.Nullなど