三項演算子にはタイプの混乱があるようです。これは他のSOスレッドで対処されていることは知っていますが、常にnull可能です。また、私の場合、私は本当にもっと良い方法を探しています。
使えるようになりたい
proc.Parameters[PARAM_ID].Value =
string.IsNullOrEmpty(dest.Id) ? DBNull.Value : dest.Id;
しかし、代わりに私はこれで立ち往生しています:
if (string.IsNullOrEmpty(dest.Id))
{
proc.Parameters[PARAM_ID].Value = DBNull.Value;
}
else
{
proc.Parameters[PARAM_ID].Value = dest.Id;
}
DBNullと文字列の間で変換が不可能なため、三項演算子は失敗します。Valueがオブジェクトであると考えると、それはばかげているように見えますが、コンパイラはそれを私にキックバックし、私は気にする必要があります。この質問のnull許容バージョンに対する答えは、nullを文字列にキャストしてそれで実行することです。ただし、DBNullを文字列にキャストすることはできないため、運がありません。
これを行うためのより簡潔な方法はありますか(ちなみに、nullablesを使用せずに)
ありがとう!