unsafe
由於它們的性質,指針產生無法驗證的代碼。因此,任何指針類型的使用都需要unsafe
上下文。
System.IntPtr
類型是void*
的安全包裝器。當不需要不安全的上下文來執行手頭的任務時,它可以作為void*
的更方便的替代方案。
與C和C ++一樣,指針的錯誤使用可能會調用未定義的行為,可能的副作用是內存損壞和意外代碼的執行。由於大多數指針操作的無法驗證的性質,正確使用指針完全是程序員的責任。
與C和C ++不同,並非所有C#類型都具有相應的指針類型。如果以下兩個條件都適用,則類型T
可能具有相應的指針類型:
T
是結構類型或指針類型。 T
僅包含以遞歸方式滿足這兩個條件的成員。