I would like to use something like this:
Dictionary[] matrix = new Dictionary[2];
  But, when I do:
Dictionary[] matrix = new Dictionary[2];
  Doing this allocates the array 'matrix', but the the dictionaries supposed to be contained in that array are never instantiated. You have to create a Dictionary object in all cells in the array by using the new keyword.
matrix[0] = new Dictionary();
matrix[0].Add(0, "first str");