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)
我很麻烦.请帮忙.
您的代码导致您正在使用的数据类型溢出.
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#中使用的每当我做的事情会溢出我的变量.尽早失败,经常失败.
| 归档时间: |
|
| 查看次数: |
535 次 |
| 最近记录: |