0

我写了一段代码如下:

var i=5;
i='K';

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

4

2 回答 2

8

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

换句话说,您的代码相当于编写:

int i = 'K';

“就我的概念而言,我无法在 var 中重新分配值。” ——这是不正确的。您无法更改隐式类型变量的类型(就像您无法更改任何其他变量的声明类型一样),但您可以重新为其分配相同类型的另一个值(或可能被强制转换的值) )。

于 2012-06-27T18:20:07.033 回答
0

i在您的第一次分配期间被隐式键入为整数。然后,您尝试将 char 值分配给整数。

于 2012-06-27T18:21:43.977 回答