Si sa che possiamo creare array con lower bound non zero, quindi è possibile avere un elemento a[..., i, ...] con i > a.Length. Mi sono chiesto allora quale sia il valore massimo che GetLowerBound e GetUpperBound possono restituire. Mi aspettavo che fosse int.MaxValue, invece per un lower bound int.MaxValue e un length 1 per una certa dimensione otteniamo System.ArgumentOutOfRangeException con il messaggio "Higher indices will exceed Int32.MaxValue because of large lower bound and/or length". Per fare il pignolo, nel nostro caso non abbiamo alcun "higher index" (la lunghezza è 1). Come mai l'errore?
Non si tratta di un test ma di una semplice domanda :-)