用于阵列访问的指针

此示例演示了如何将指针用于对 C#数组的类 C 访问。

unsafe
{
    var buffer = new int[1024];
    fixed (int* p = &buffer[0])
    {
        for (var i = 0; i < buffer.Length; i++)
        {
            *(p + i) = i;
        }
    }
}

unsafe 关键字是必需的,因为指针访问不会发出通常在以常规方式访问 C#数组时发出的边界检查。

fixed 关键字告诉 C#编译器发出指令以异常安全的方式固定对象。需要固定以确保垃圾收集器不会将数组移动到内存中,因为这会使指向数组内的任何指针无效。