2016-07-12 8 views
2

は、C#ではキャストの2通りの方法があります。なぜ演算子でintをcharにキャストできないのですか?

  • foo as int
  • (int)foo

なぜ最初の行はコンパイルできません、2番目はないでしょうか? MSDNから

Console.Write(49 as char); 
Console.Write((char)49); 
+1

誰に投票する前にそれを削除するのはなぜですか? –

+0

私はこれが-10で終わると予想しました。私はコメント特権を失いたくありません。 –

+1

何が間違っているかを尋ねる前に削除しないでください; –

答えて

4

あなたは互換性の基準タイプ又はnullable types間の変換の特定のタイプを実行するために演算子として使用することができます。

charは、参照型でもnull型でもありません。変換可能でないため、出力変数49nullに設定することはできません。この状況では役に立ちませんが、char?で動作します。

+0

'char?これは参照型でもありません。 –

+0

ドキュメントで参照されている[nullable type](https://msdn.microsoft.com/en-us/library/1t3y8s4s.aspx)です。 –

+0

@MikeTラッセはそれを知っていると確信しています。彼は非常に経験豊富な.NET開発者です(彼の回答リストを参照)。彼はちょうど片を欠いていた。 –

関連する問題