在"变量"中重新确定"K"

tec*_*mad 0 c#

我写了一段代码如下:

var i=5;
i='K';
Run Code Online (Sandbox Code Playgroud)

编译代码没有错误.就我的概念而言,我无法在var中重新赋值.因为我已将整数5分配给i.i的类型是int.那么为什么它允许在i中分配一个char'K'?

Dou*_*las 8

因为a char可以隐式地转换为int.变量的类型i仍然是int- 您可以使用i.GetType()- 来测试它- 它的值将是字符的代码点'K'(即,75).

换句话说,您的代码等同于编写:

int i = 'K';
Run Code Online (Sandbox Code Playgroud)

"就我的概念而言,我无法在var中重新赋值." - 这是不正确的.你不能改变类型的隐式类型的变量(就像你不能改变声明的类型任何其他变量的),但你被允许重新分配它同类型的另一个值(或一个可以浇铸成这样).