c#数组索引类型检查
好吧,我在一个同事刚刚开始支持的代码中遇到了这个问题。我从来没有做过这样的事情,也不会做,但我很惊讶编译器没有将其标记为错误 基本上,您可以通过这个小片段看到“奇怪”的行为:c#数组索引类型检查,c#,arrays,indexing,compilation,C#,Arrays,Indexing,Compilation,好吧,我在一个同事刚刚开始支持的代码中遇到了这个问题。我从来没有做过这样的事情,也不会做,但我很惊讶编译器没有将其标记为错误 基本上,您可以通过这个小片段看到“奇怪”的行为: 数组[3/4]=3 这是允许的,即使3/4,我想,会返回一个双。 如果将其更改为: 数组[3.0/4]=3 您确实会遇到编译器错误 我假设第一部分不会创建编译器错误,因为它进行整数除法并返回整数。是的,如果两部分都是整数,编译器将执行整数除法。 你得到 当您尝试将double除以整数时,会得到一个double结果,该结果不
数组[3/4]=3代码>
这是允许的,即使3/4,我想,会返回一个双。
如果将其更改为:
数组[3.0/4]=3代码>
您确实会遇到编译器错误
我假设第一部分不会创建编译器错误,因为它进行整数除法并返回整数。是的,如果两部分都是整数,编译器将执行整数除法。
你得到
当您尝试将double除以整数时,会得到一个double结果,该结果不是数组的有效索引。您可以很容易地使用此(3/4).GetType()
,它将是System.Int32
。希望您更改此代码。(我假设原始代码使用的是变量,而不是硬编码的3/4。)这是错误的邀请。我希望我能取消它。原来的代码实际上是这个数组[variable*3/4],它做了需要做的事情,但我不喜欢它,我自己也不会这样编码。
3 / 4 = 0