次のようなコードを書きました。
var i=5;
i='K';
コードはエラーなしでコンパイルされています。私のコンセプトに関する限り、var に値を再割り当てすることはできません。整数 5 を i に割り当てたので。i の型は int です。では、なぜ i に char 'K' を割り当てることができるのでしょうか?
次のようなコードを書きました。
var i=5;
i='K';
コードはエラーなしでコンパイルされています。私のコンセプトに関する限り、var に値を再割り当てすることはできません。整数 5 を i に割り当てたので。i の型は int です。では、なぜ i に char 'K' を割り当てることができるのでしょうか?
achar
は暗黙的に an にキャストできるためint
です。変数の型i
は変わらずint
– を使用してこれをテストできますi.GetType()
– であり、その値は文字のコードポイント'K'
(つまり、75
) です。
つまり、コードは次のように書くのと同じです。
int i = 'K';
「私のコンセプトに関する限り、var に値を再割り当てすることはできません。」– それは正しくありません。暗黙的に型指定された変数の型を変更することはできませんが(他の変数の宣言された型を変更できないのと同様)、同じ型の別の値 (またはそのようにキャストできる値) を再割り当てすることはできます。 )。
i
最初の代入時に整数として暗黙的に型指定されます。次に、char 値を整数に割り当てようとしています。