との通常の退屈な違いをCast
超えてAs
- リンゴが果物であることがわかっている場合は使用できます-そうでない場合は例外がスローされます
(Fruit)apple
as value
成功したかどうかを確認するためにnullに対してチェックできます[例外をスローしません...]
ただし、これに関する @EricLippert の記事を読んでいて、Nullable Value Types に関する素敵なサンプルがありました。
short? s = (short?)123;
int? i = s as int?;
これはコンパイルされません...
タイプ 'short?' を変換できません 'int?' に 参照変換、ボックス化変換、ボックス化解除変換、ラッピング変換、または null 型変換を介して
罰金。
だからなぜこれ:
short? s = (short?)123;
int? i = (int?)s;
コンパイルしますか? (すべての期待に反して!私はそうでs
はない ことを知っていint?
ます-そしてそれはBANGになるはずですが、そうではありません...)
ここでチェックしているキャストは、前の例 (Bang になった) よりもはるかに致命的であるはずです。
この話題の話題について質問するのは気分が悪い.
前もって感謝します。