Vb.net例外

Bar*_*run 0 c# vb.net exception

我刚刚将我的c#代码转换为vb.net.这是例外.

c#代码:

private static short[] muLawToPcmMap;

decoded[2 * i + 1] = (byte)(muLawToPcmMap[data[i]] >> 8);
Run Code Online (Sandbox Code Playgroud)

vb代码:

decoded(2 * i + 1) = CByte(muLawToPcmMap(data(i)) >> 8)
Run Code Online (Sandbox Code Playgroud)

例外:

Arithmetic operation resulted in an overflow.
Run Code Online (Sandbox Code Playgroud)

我很麻烦.请帮忙.

Ada*_*lls 7

您的代码导致您正在使用的数据类型溢出.

VB.NET的默认行为是检查算术运算,而在C#中则不检查算术运算.

在C#代码周围添加一个checked语句,看它也会失败.

checked {
   // do all your work here, any overflow will cause an exception
}
Run Code Online (Sandbox Code Playgroud)

修复代码以停止溢出.正如我在下面提到的评论,算术溢出不是必须忽略的.您在此处执行的操作可能会导致意外结果,您应该为此明确编写代码(通过增加类型的大小或处理失败).

您应该(IMO)做的绝对最后一件事是在您的项目属性,编译选项卡,高级编译器设置按钮下,选中标记为"删除整数溢出检查"的复选框.我个人认为这是一个坏主意,而且我个人checked在C#中使用的每当我做的事情会溢出我的变量.尽早失败,经常失败.