int[] actually derives from Array. from Microsoft "all arrays are actually objects"
All objects are nullable (for all versions of C#), thus the "nullability" of value types more recently introduced doesn't impact the array case.
Now as to the question of how to prevent an object being null. Perhaps you could be really clever with runtime modifications to prevent null assignment, but going to be terribly tricky, and still likely to have holes (unsafe assignments for one)
It is quite likely that a pivot of the larger problem will reveal a larger data-structure. In that data structure you could encapsulate the array behaviour, and rely on your own coding diligence to keep it non-null. And with the array stored as a private variable you can be assured no one else can assign null to it. Now of course the outer object could be null, but you can save yourself from the null checks in your inner code.
class Foo {
private int[] someArray = new int[10];
public int[] getArray { return someArray; }
// Insert your amazing stuff here
}
?. Likeint?is nullable, butintisn't. The same way I would expectint[]to be non-nullable andint[]?to be nullable.int?[]is different thanint[]?. I believe the question is about nullable referece types. Not nullable value types.