Originariamente inviato da URANIO
L'errore dovrebbe essere dovuto al fatto che cerchi di accedere ad un metodo di una classe non istanziata.

L'array interno lo dichiari in questo modo
codice:
private static Record[] table;
Con questo codice dai una dimensione all'array
codice:
table = new Record[dimTable];
Ma è un array di oggetti null.

Prova a modificare l'add:
codice:
    public void add(int idx, string data)
    {
        table[idx]= new Record(data);
    }
PS
Sai che esistono già librerie che fanno questo nel framework giusto?

PPS
-Record[] table; non lo farei static ma solo private
-La classe Record la farei di tipo struct (è una particolare classe .net)
-Il metodo ADD lo metterei solo nella classe table, è suo il compito di aggiungere oggetti all'array, Record non può "aggiungersi" ne eliminarsi dall'array (ne vederlo), chi comanda l'array interno è solo la classe Table.
cavolo hai ragione, in effetti ora funziona. Davo pr scontato che
codice:
table = new Record[dimTable];
si preoccupasse non solo di dare una dimensione all'array ma anche di istanziare anche le classi usando il costruttore generico Record() ._. cosa che giustamente non fa perché non glie l'ho detto. ._. e pensare che ci ho perso le ore dietro a sta cosa... *depressione* Eheh.

Anche se non mi sono informato sull'esistenza di tale libreria, immaginavo esistesse già (come esiste in Java), però ho bisogno di fare eserci... parecchi esercizi... visto che sia il C# che il Java ormai sono usati in larga scala in ambito lavorativo. Penso che questo sia un esercizio interessante se fatto bene. Come lo è stato quando l'ho fatto in C per un progetto all'università.

altra domanda: secondo i vostri "gusti" è più elegante modificare il costruttore di Table in questo modo:
codice:
public Table(int dimTable) //costruttore di Table
{
    table = new Record[dimTable];
    for(int i = 0; i < dimTable; i++)
    {
        table[i] = new Record();
    }

    this.dimTable = dimTable;
}
oppure lasciare il costruttore come prima ed istanziare Record solo quando vado ad aggiungere un nuovo record nella tabella?