不安全的数组索引

void Main()
{
    unsafe
    {
        int[] a = {1, 2, 3};
        fixed(int* b = a)
        {
            Console.WriteLine(b[4]);
        }
    }
}

运行此代码会创建一个长度为 3 的数组,但随后会尝试获取第 5 个项目(索引 4)。在我的机器上,这打印 1910457872,但行为没有定义。

如果没有 unsafe 块,则无法使用指针,因此无法在不引发异常的情况下访问数组末尾的值。