我希望避免托管 C++ (CLI) 中的溢出。在 C# 中有一个未检查的关键字,在 C++ 中溢出不会以异常结束。
作为引用,未选中的记录在案here .基本上如果你这样做:
unchecked
{
int1 = 2147483647 + 10; //this overflows in CLI but is ok in C# and C++
}
在 C# 中,它不会溢出,而是通过获取最低有效位转换为 int。例如,当您计算哈希码时,这是合适的。
注意:我意识到没有等效的 C++ 关键字,但一些位移应该可以解决问题;
最佳答案
您可以只在方法周围使用 #pragma unmanaged
来获得原生 C++ 中的正常未检查行为。
关于c# - 什么是 C# 检查的 C++ 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14500593/