c#数组索引类型检查

时间:2016-07-05 18:57:47

标签: c# arrays indexing compilation

好吧,我在一些同事刚刚开始支持的代码中遇到了这个问题。我从来没有做过这样的事情并且不会做,但我很惊讶编译器没有将其标记为错误。

基本上你可以看到"奇怪的"这个小片段的行为:

array[3/4] = 3;

这是允许的,即使我认为3/4会返回一个双倍。 如果您将其更改为:

array[3.0/4] = 3;

您收到编译错误。

我假设第一个没有创建编译器错误,因为它执行整数除法并返回一个整数。

1 个答案:

答案 0 :(得分:5)

是的,如果两个部分都是整数 - 编译器执行整数除法。 你得到了

3 / 4 = 0

当你尝试将double除以整数时 - 得到一个double结果,这不是数组的有效索引。