Warum ist in C # "long" als Array-Länge zulässig?

Ich wollte versuchen, ein 4-Milliarden-Byte-Array zuzuweisen, und das ist mein C # -Code:

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

Dieser Code schlägt mit fehlSystem.OverflowException in der Zeile mitnew. Okay, stellt sich herausLength kehrt zurückint, also ist die Arraylänge auch auf was begrenztint kann speichern.

Warum gibt es dann keinen Kompilierungsfehler undlong darf als Anzahl der Array-Elemente bei der Zuordnung verwendet werden?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage