FW 4.0以降、IntPtr構造には次のAddメソッドがあります。
public static IntPtr Add(
IntPtr pointer,
int offset
)
IntPtrこれは、私たちが持っていた数学に関するすべての質問(1、2、おそらくそれ以上)に対処することになっているので、素晴らしいことです。
しかし、なぜoffset intですか?
そうではないIntPtrでしょうか?範囲を超える値で64ビットポインタをオフセットすることは容易に想像できintます。
たとえば、次のことを考慮してMarshal.OffsetOfください。
public static IntPtr OffsetOf(
Type t,
string fieldName
)
IntPtr構造体メンバーへのオフセットとしてを返します。これは完全に理にかなっています!Addまた、このオフセットを新しい方法で簡単に使用することはできません。にキャストしてから、ループで数回Int64呼び出す必要があります。Add
IntPtr.Sizeまた、適切に作成されたアプリケーションとは無関係であるという考えそのものを殺しているようです。オフセットをなどの特定のタイプにキャストするInt64必要があります。その時点で、サイズの違いの管理を開始する必要があります。そして、128ビットIntPtrが表示されたときに何が起こるかを想像してください。
ここでの私の質問は、なぜですか?
私は結論を正しているのでしょうか、それとも要点を見逃しているのでしょうか。