Потому что char
может быть неявно литован на int
. Тип переменной i
все равно будет int
- вы можете проверить это с помощью i.GetType()
- и его значение будет кодовым числом символа 'K'
(а именно, 75
).
Другими словами, ваш код эквивалентно записи:
int i = 'K';
«Что касается моей концепции, то я не могу повторно присвоить значение в вар.» - Это не правильно. Вы не можете изменить тип неявно типизированной переменной (так же, как вы не можете изменить объявленный тип любой другой переменной), но вам разрешено повторно назначить ему другое значение того же типа (или тот, который может быть добавлен как это).
'int i = 'K';' совершенно законно. –
Возможный дубликат [C# char to int] (http://stackoverflow.com/questions/239103/c-sharp-char-to-int) – Jehof