C#中的代码: address = glowObject +(glowIndex * 0x38)+ 0x4; VB中的代码: address = glowObject +(glowIndex *& H38)+& H4
我在C#代码和VB代码中都在该行插入了一个断点。
两者的价值相同。
C#:断点:
VB断点:
所以看起来我的VB代码得到的结果,但它仍然在这行代码上抛出异常。
可能导致这种情况的原因是什么?
答案 0 :(得分:4)
在C#中,默认情况下取消选中算术运算,这意味着在运行时不会检查算术溢出。您可以使用checked
/unchecked
keywords, and/or with the /checked
compiler option控制此项。
在VB.NET中,默认情况下会检查算术运算。
在您的代码中,结果溢出了int
的容量;在C#中,它以静默方式溢出,产生不正确的结果,而在VB.NET中,它会抛出异常。在任何一种情况下,您的代码都有错误......
答案 1 :(得分:0)
找到解决方案:)
它就像在编译器选项中选中一个框一样简单。
感谢Thomas Levesque告诉我compiler option.
转到项目设置中的编译选项卡,单击Advanced Compiler Settings,然后选中“Remove integer overflow checks”