The third case might be best for what you want for another reason - app settings defines the size. Once you know dim1 and dim2, you just allocated it with:
var array=new[dim1*dim2];
When accessing it, for what you think of as array[i,j], you use something like array[dim1*i+j] instead.