整数溢出 – 将C#转换为VB.Net代码

从C#到VB.Net的代码转换出了问题。

var x = 5783615; var y = 56811584; var t = x * y; 

x,y和t是整数。 在c#’t’将是-15536​​49728。 在VB.Net中,我将得到一个整数溢出exception。

知道怎么解决吗?

默认情况下,C#不会检查溢出,但VB会(默认情况下)检查溢出。

您可以将VB项目设置为不在“编译”选项卡的“高级编译选项”中检查整数溢出。 这将导致该特定项目在这种情况下停止引发OverflowException 。

您可以通过以64位计算产品然后仅使用32位结果来获得与C#忽略溢出相同的值:

 Dim x As Integer = 5783615 Dim y As Integer = 56811584 Dim tmp As Int64 = Convert.ToInt64(x) * Convert.ToInt64(y) Dim bb = BitConverter.GetBytes(tmp) Dim t = BitConverter.ToInt32(bb, 0) ' t is now -1553649728 

您需要显式类型定义来避免这种情况,因为定义将隐式地从值中获取。 在vb.net中尝试:

 dim x as int = 5783615 dim y as int = 56811584 dim t as int = x * y 

可能还有其他方法可以做到这一点,但这应该是一个开始。 在C#中,您也可以尝试使用int或int32或int64。

祝好运。