Nello sviluppo del mio progetto ho scoperto una cosa perlomeno curiosa, a meno che io non abbia capito niente di Collezioni.
Esempio di codice:
'esiste altrove una Classe pubblica clsElementi
Public cLista As Collection 'collezione di classi clsElementi
Private $cElemento as clsElementi 'dichiaro un elemento della Collection
....
$cElemento = New clsElementi
....
$cElemento = cLista["chiave"]
Fin qui tutto bene; $cElemento è una copia dell'elemento [chiave] nella collezione.
Però mi aspetterei che $cElemento sia, come detto, una copia instanziata per valore e non per referenza.
Questo è forse il mio errore 'ideologico'
In realtà, $cElemento è una copia per referenza, tant'è che se io modifico i contenuti di $cElemento questi sono immediatamente riflessi nella Collezione originaria.
Se questo è confermato, non sono certo che sia il comportamento corretto; è vero che semplifica la vita in quanto non è necessario fare l'assegnazione inversa (cLista["chiave"] = $cElemento) per registrare la modifica, però in questo modo si possono generare degli effetti collaterali subdoli.
Non so se sono stato chiaro nell'esposizione, ma se qualcuno ha delucidazioni da fornire è benaccetto.