V C# tiež nemusíš používať vždy Dispose - napr. ak používaš nejaký objekt tak, že ho už ďalej nebudeš potrebovať, tak použiješ using:
using (Trieda objekt = new Trieda())
{
/* použitie objektu */
}
Dispose použiješ vtedy, ak ten objekt potrebuje žiť dlhšie než v rámci volania jednej metódy (a kratšie než počas behu celého procesu).