Ho provato ad inserire questo codice

codice:
tot.Add(rec);
Console.WriteLine("Stampo il record appena aggiunto");
string[] ott = new string[11]
ott = (string[])tot[tot.Count-1]);

for (int j = 0; j < 11; j++) {
                    Console.Write(ott[j]+" ");
                }
Console.WriteLine("\n");
Ogni volta viene stampato il record corretto, quindi l'arraylist sembrerebbe popolato correttamente.

Poi, per provare, faccio

codice:
             string[] value = tot[0] as string[];

            Console.WriteLine(value[0]);

             value = tot[40] as string[];
            Console.WriteLine(value[0]);
            value = tot[tot.Count-1] as string[];
            Console.WriteLine(value[0]);
cioè stampo la chiave primaria del primo elemento, del 41esimo e dell'ultimo...ebbene....stampa sempre la stessa cosa!!!

Ho cambiato l'implementazione, sono passato ad un array bidimensionale di stringhe, e funziona regolarmente...mi sento un cretino, non riesco davvero a venirne a capo!