nullable int に null の値を代入できない理由を説明してください。
int? accom = (accomStr == "noval" ? null : Convert.ToInt32(accomStr));
そのコードの何が問題になっていますか?
問題は、null を int に割り当てることができないということではありません。問題は、三項演算子によって返される両方の値が同じ型でなければならないか、一方が他方に暗黙的に変換可能でなければならないことです。この場合、null を暗黙的に int に変換したり、その逆に変換したりすることはできないため、明示的なキャストが必要です。代わりにこれを試してください:
int? accom = (accomStr == "noval" ? (int?)null : Convert.ToInt32(accomStr));
ハリー S の言うことはまったく正しいのですが、
int? accom = (accomStr == "noval" ? null : (int?)Convert.ToInt32(accomStr));
また、トリックを行います。(私たち Resharper ユーザーは、人混みの中で常にお互いを見つけることができます...)
別のオプションは、使用することです
int? accom = (accomStr == "noval" ? Convert.DBNull : Convert.ToInt32(accomStr);
私はこれが一番好きです。
同様に、私は長い間しました:
myLongVariable = (!string.IsNullOrEmpty(cbLong.SelectedItem.Value)) ? Convert.ToInt64(cbLong.SelectedItem.Value) : (long?)null;