從FW 4.0開始,IntPtr
structure有Add
方法:新的IntPtr.Add方法 - 我錯過了int的點嗎?
public static IntPtr Add(
IntPtr pointer,
int offset
)
這是偉大的,因爲它應該解決的IntPtr
數學,我們有所有這些問題(1,2,可能更多)。
但爲什麼是offset
int
?
是否必須爲IntPtr
?我可以很容易地想象一個超出int
範圍的值偏移64位指針。
例如,考慮Marshal.OffsetOf
:
public static IntPtr OffsetOf(
Type t,
string fieldName
)
它返回一個IntPtr
作爲偏移到所述結構構件。這非常合理!你不能輕易使用這個偏移量和新的Add
方法。您必須將其投射到Int64
,然後在循環中多次撥打Add
。
此外,它似乎殺死了IntPtr.Size
的想法與正確書面申請無關。您必須將偏移量轉換爲特定類型,例如Int64
,此時您必須開始管理大小差異。和圖像128位IntPtr
出現時會發生什麼。
這裏我的問題是,爲什麼?
我的結論是否正確?還是我錯過了觀點?