MSDNでのオペレーターの説明には、次のようなコメントがあります。
例外は、valueの値が現在のプラットフォームでサポートされているよりも多くのビットを必要とする場合にのみスローされます。
ToInt32
の説明はそうではないので、タイトルは完全に正しくないと思います(簡潔にするため)、
より正確な質問は次のようになります。「Int32に適合する値に対して64ビットモードでIntPtr.ToInt32
スローし、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
例外をスローするのだろうか、それは安全でないキーワードですか?