When I try to do this...
Item[,] array = new Item[w, h]; // Two dimensional array of class Item, // w, h are unknown at
Not knowing the size isn't a problem:
for (int i = 0; i < twoDimArray.GetLength(0); i++) { for (int j = 0; j < twoDimArray.GetLength(1); j++) { twoDimArray[i, j] = ... } }