运营商在 MSDN 上的描述有一个备注:
仅当 value 的值需要比当前平台支持的更多位时才会引发异常。
whileToInt32
的描述不是,所以我认为标题并不完全正确(为简洁起见),
一个更正确的问题是:“为什么在 64 位模式下IntPtr.ToInt32
抛出适合 Int32和 Explicit(IntPtr to Int32) 的值不”OverflowException
在反编译IntPtr
ToInt32
中和操作符看起来很相似:
public static explicit operator int(IntPtr value)
{
return (int) value.m_value;
}
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
public unsafe int ToInt32()
{
return (int) this.m_value;
}
我想知道是什么ToInt32
导致抛出异常,它是 unsafe 关键字吗?