指针
指针和 unsafe
由于它们的性质,指针产生无法验证的代码。因此,任何指针类型的使用都需要 unsafe
上下文。
System.IntPtr
类型是 void*
周围的安全包装。当不需要不安全的上下文来执行手头的任务时,它可以作为 void*
的更方便的替代方案。
未定义的行为
与 C 和 C++一样,指针的错误使用可能会调用未定义的行为,可能的副作用是内存损坏和意外代码的执行。由于大多数指针操作的无法验证的性质,正确使用指针完全是程序员的责任。
支持指针的类型
与 C 和 C++不同,并非所有 C#类型都具有相应的指针类型。如果以下两个条件都适用,则 T
类型可能具有相应的指针类型:
T
是结构类型或指针类型。T
仅包含以递归方式满足这两个条件的成员。