Reputation: 2445
I'm a bit new to C# and I don't understand how to make this work:
private static readonly Unit[,] UNIT_TYPES = new Unit[,]{LENGTH_UNITS, ANGLE_UNITS};
private static readonly Unit[] LENGTH_UNITS = new Unit[3]{Unit.Millimeters, Unit.Inches, Unit.Centimeters};
private static readonly Unit[] ANGLE_UNITS = new Unit[2]{Unit.Degrees, Unit.Radians};
I'm getting the error "A nested array initializer was expected" on the UNIT_TYPES variable. It seems to not except the fact that LENGTH_UNITS and ANGLE_UNITS will be ready at compile time. What's the best way to rewrite this?
Thanks!
Upvotes: 0
Views: 464
Reputation: 70
You're trying to initialize a rectangular array
int[,] Position = { {2 , 3}, {4 , 5}, {6 , 7} };
this like three array inside a array Eq:
int[] IN0 = { 2, 3 };
int[] IN1 = { 4, 5 };
int[] IN2 = { 6, 7 };``
int[][] Final = { IN0, IN1, IN2 };
int[,] =
the way of create Rect some as grids.
int[][] =
the way of accessing grid or 2d images
Upvotes: 0
Reputation: 1499860
You're trying to initialize a rectangular array - whereas what you're providing would be more suitable as a jagged array. A rectangular array is a single array with multiple dimensions - whereas a jagged array is an array of arrays - i.e. it's a single-dimensional array whose element type is another array type (so each element is an array reference).
You should fix the initialization order too, otherwise you'll just have null entries (because the jagged array would be initialized with the current values of the other variables, which will be null until initialized...)
private static readonly Unit[] LengthUnits = { Unit.Millimeters, Unit.Inches, Unit.Centimeters };
private static readonly Unit[] AngleUnits = { Unit.Degrees, Unit.Radians };
private static readonly Unit[][] UnitTypes = { LengthUnits, AngleUnits };
Upvotes: 6
Reputation: 138
The problem is, what you're doing is creating an array of arrays, but the compiler expects a 2 dimensional array.
Upvotes: 0