Cerca di capire bene il concetto di cui stiamo parlando perchè è fondamentale. Nel passaggio di parametri succede la stessa cosa:

- se il parametro è di tipo primitivo si passa per valore e quindi ne viene fatta una COPIA esatta!
- se il parametro è un oggetto viene passata la copia del RIFERIMENTO e non di tutto l'oggetto!

esempio:

public void metodo1(){
Oggetto ogg = new Oggetto();
metodo2(ogg);
ogg.AggiungiElemento("a");
//fine
}

public void metodo2(Oggetto o){
o.AggiungiElemento("b");
}

Alla fine troverai nell'oggetto sia "b" che "a". Questo proprio per il fatto che "o" è una copia di "ogg" (che sono due riferimenti allo stesso oggetto...immaginatele pure come due frecce che puntano allo stesso scatolotto).