la funzione ritorna un riferimento(puntatore) alla tabella e non la tabella.
quel dt.clear non serve a niente visto che subito dopo chiami il dispose...
quindi, se dopo che hai eseguito tutte le funzioni che ti servono e non ti serve più la tabella allora fai il dispose e basta...
ovviamente se non fai il dispose, appena si esce da quel blocco e quindi la tabella non ha nessun referimento ci pensa il GC a chiamare la dispose...
personalmente chiamo dispose molto raramente o meglio lo chiamo solo quando sò che quel determinato oggetto occupa tanta memoria per esempio si i form che hanno tanti controlli.