I'm interested in creating a large 2-dimensional array of (custom) objects. I'd like to call the constructor of each object with the x and y index of its array position. For a small 2D array, this would look something like:

Code:
Cell[,] cells = new Cell[2,2] {{new Cell(1,1), new Cell(2,1)}, {new Cell(2,1), new Cell(2,2)}};
(Where Cell is a custom class that accepts two int parameters to its constructor.)

That's all fine and well but what if I want to create a LARGE array of objects (say, 100 in each dimension) and I want to call the constructor on each array element? It would be impractical to use the above notation (i.e. explicitly declare each Cell) but I don't know how else to create the array. Moreover, that approach wouldn't work if I didn't know the exact size of the array at design time (which I don't).

ArrayList seems like it would work but it only handles single dimensions. I suppose an ArrayList of ArrayLists might work but it seems like a cleaner solution is out there...