C# Language Indice di matrice non sicuro


Esempio

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

L'esecuzione di questo codice crea una matrice di lunghezza 3, ma poi tenta di ottenere il quinto elemento (indice 4). Sulla mia macchina, questo stampato 1910457872 , ma il comportamento non è definito.

Senza il blocco unsafe , non è possibile utilizzare i puntatori e, pertanto, non è possibile accedere ai valori oltre la fine di un array senza che venga generata un'eccezione.