中さんのところの Nullableを含めた3項演算子 に反応。
なるほど。3項演算子は 2項目と 3項目の型だけで 3項演算子の評価結果の型を判断してて、その評価結果がどう使われてるかまでは考慮してないんでしょうね。まぁ、これはこれで仕方ないような気はします。
けど、if 文にまでしなくても int? であることを教えてあげればコンパイルできると思うんですが、それではダメですか?
int? ユーザID = row == null ? (int?)null : row.ユーザID;
もしくは
int? ユーザID = row == null ? null : (int?)row.ユーザID;
てな感じで。
あ。そっか(^^
返信削除ふむ。int?.Null なんてのが自動的に定義されると、もっとキレイに書ける??
返信削除> ふむ。int?.Null なんてのが自動的に定義されると、もっとキレイに書ける??
返信削除なるほど、Nullable<T> を返す Null プロパティが Nullable<T> にあれば、、、ということですね。
けど、個人的には (int?)null で十分わかりやすいような気がw
VB とかではどうなんだろ。そもそも今回のように 「int? 型の null」 が必要になる場面ってあるんだろうか?
うーん、row 自体が null な時はそもそも ユーザ ID 取り出したりしないかも。
返信削除