¿Por qué se permite "largo" como longitud de matriz en C #?

Quería tratar de asignar una matriz de 4 mil millones de bytes y este es mi código C #:

long size = 4 * 1000;
size *= 1000;
size *= 1000;
byte[] array = new byte[size];

este código falla conSystem.OverflowException en la línea que contienenew. Esta bien, resultaLength devolucionesint, por lo que la longitud de la matriz también se limita a loint puede almacenar

Entonces, ¿por qué no hay error de compilación ylong ¿Se puede utilizar como el número de elementos de matriz en la asignación?

Respuestas a la pregunta(5)

Su respuesta a la pregunta