指针

指针和 unsafe

由于它们的性质,指针产生无法验证的代码。因此,任何指针类型的使用都需要 unsafe 上下文。

System.IntPtr 类型是 void*周围的安全包装。当不需要不安全的上下文来执行手头的任务时,它可以作为 void*的更方便的替代方案。

未定义的行为

与 C 和 C++一样,指针的错误使用可能会调用未定义的行为,可能的副作用是内存损坏和意外代码的执行。由于大多数指针操作的无法验证的性质,正确使用指针完全是程序员的责任。

支持指针的类型

与 C 和 C++不同,并非所有 C#类型都具有相应的指针类型。如果以下两个条件都适用,则 T 类型可能具有相应的指针类型:

  • T 是结构类型或指针类型。
  • T 仅包含以递归方式满足这两个条件的成员。