Interlocked.Increment 溢出会导致 .NET 运行时损坏吗?

Can Interlocked.Increment overflow cause .NET runtime corruption?

Interlocked.Increment 的 MSDN 文档指出:

This method handles an overflow condition by wrapping: if location = Int32.MaxValue, location + 1 = Int32.MinValue. No exception is thrown.

位置 + 1”在这种情况下是什么意思?如果 Increment 更改 location 字段旁边的内存位置,这是否可能导致 .NET 运行时损坏,因为这个相邻位置可能是任何东西(对象引用、class 元数据等)?

这只是意味着如果你想要增加的值已经等于Int32.MaxValue并且你增加一个,而不是抛出错误,它returns Int32.MinValue

如果你这样做

也会发生同样的情况
var value = Int32.MaxValue;
value += 1;

如果您明确希望抛出异常,请使用 checked 关键字

var value = Int32.MaxValue;
value = checked(value + 1);