C# Language Índice de matriz insegura


Ejemplo

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

La ejecución de este código crea una matriz de longitud 3, pero luego intenta obtener el quinto elemento (índice 4). En mi máquina, esto imprimió 1910457872 , pero el comportamiento no está definido.

Sin el bloque unsafe , no puede usar punteros y, por lo tanto, no puede acceder a los valores más allá del final de una matriz sin que se genere una excepción.