Null可能な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;