int foo;
int? bar;
if (bar != null)
{
foo = bar; // does not compile
foo = (int)bar; // compiles
foo = bar.Value; // compiles
}
私は長い間、最初のステートメントが間違っていることは知っていましたが、常に私を悩ませました。私はbar
がnullでないことを確認しました。なぜコンパイラが不平を言っていますか?nullをチェックした後に明示的な変換が必要なのはなぜですか?
これは質問の文字に答えますが、精神ではないと思います。問題の精神は、「ナル化可能な変換演算子はなぜ暗黙的ではなく明示的に宣言されるのですか? '' '編集:' ''実際には、それはなぜ答えます。私の悪い。 – Medinoc