Newsgroup: it.comp.lang.visual-basic
Titolo: [?][VB.NET] New

Premetto che non uso 
VB.NET
 (e non ho intenzione di passare a 
VB.NET
nell'immediato futuro) ma che la domanda e' spinta solo da curiosita'
sorta leggendo i vari post inerenti 
VB.NET
.
In VB6 (e <) e' deprecabile l'uso di:
Dim Oggetto As New Classe
(1)
Ed e' invece da preferire:
Dim Oggetto As Classe
Set Oggetto = New Classe
(2)
Dal codice postato in 
VB.NET
 ho invece notato che tutte le dichiarazioni
vengono fatte come la (1). E' cambiato qualcosa?
Lokar.Curioso
--
Sito Comune: 
http://www.it-lang-vb.net/
Manifesto: 
http://www.it-lang-vb.net/docs/Manifesto.txt

 ha scritto nel messaggio
news:IAiN8.12$754....@nreader2.kpnqwest.net...


In VB.Net l'istanza della classe viene creata non appena viene incontrato
l'enunciato New quindi
dim oTest as new Test
in VB.Net crea un istanza della classe Test e la assegna alla variabile
oTest
in VB6 viene creata una variabile di tipo Test mentre l'istanza viene creata
non appena accedi ad uno qualsiasi dei metodi/proprietà dell'oggetto.
La dichiarazione obbliga inoltra VB6 a verificare se l'oggetto è stato
istanziato o meno prima di accedere all'oggetto creando un inutile overhead
(ecco perchè è deprecabile)
HTH
Corrado

 (ecco perchè è deprecabile)
Comportamento noto, grazie mille per il chiarimento. =)
Lokar


 Finalmente, oserei dire... =)
[SNIP]
Gia'... nota che e' anche possibile la nuova sintassi, probabilmente ancora
piu' esplicativa
Dim oTest As Test = New Test
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

 (ecco perchè è deprecabile)
Ma questo overhead è presente in entrambi i modi di dichiarare e istanziare
l'oggetto o si presenta in uno solo dei due casi ?
E' presente ogni volta che utilizzo un metodo o una proprietà dell'oggetto o
solo la prima volta dopo averlo dichiarato ?
In parole povere, il mio programma potrebbe girare più o meno velocemente a
seconda del metodo che utilizzo per dichiarare/istanziare gli oggetti ?
Hai dei link che spiegano la cosa ?
Grazie,  Charlie B.

 Hai dei link che spiegano la cosa ?
Mmmm... no, ricordo di averlo studiato frequentando il MOC 780 Programming
Visual Basic 5.0.
Ciao!
--
Lorenzo Benaglia
UGIdotNET - 
http://www.ugidotnet.org

 Esatto.
Grazie per le precisazioni, abbastanza logiche, però ho fatto una prova
abbastanza banale: ho dichiarato e istanziato prima in un modo e poi
nell'altro un oggetto di tipo form e poi ho ciclato n volte (tantissime) il
settaggio della proprietà caption e ho misurato il tempo con la funzione
Timer.
L'impressione è che i tempi siano gli stessi, dico 'impressione' perchè ogni
volta che rilanciavo lo stesso programma i tempi cambiavano di un pochino.
Attendo di trovare un esempio in cui i tempi di esecuzione siano costanti e
poi lo posto per avere dei commenti.
Intanto se qualcuno ha delle indicazioni sono gradite (è sempre bello
ottimizzare il proprio codice :-) )
Charlie B.

 ottimizzare il proprio codice :-) )
Piu' che un problema di prestazioni, e' un problema di stabilita'
ed affidabilita' del codice.
Se un oggetto in vb5/6 e' dichiarato con 
Dim myObj As New MyClass
quando successivamente lo metti a Nothing
e, ancora dopo, provi un test del genere:
If (myObj Is Nothing) Then
vb te lo reistanzia al volo facendoti subito fallire il test,
quindi lasciandoti un oggetto appeso che dentro potrebbe
contenere di tutto.
E poi li' a domandarti: ma perche' la mia applicazione consuma
memoria? Perche' anche se chiudo tutto il mio exe e' ancora
elencato fra i processi attivi? E via di questo passo.
In pratica, in vb5/6 As New e' male, mentre, come ben osservato
da Corrado, in 
vb.net
 e' tutta un ' altra cosa (perche' sono
due linguaggi differenti).
-- 
ciao, hal
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ed affidabilita' del codice.
In effetti non sono riuscito a verificare una minima differenza di velocità
tra le due soluzioni, quindi, se nessuno  ha esempi da postare che
dimostrino il contrario, quello che si diceva nei post precedenti riguardo
la velocità non è vero/verificabile ...
Grazie per le altre utili indicazioni, però è troppo comodo dichiarare con
il New ... forse per covincermi a non usarlo devo trovare un programma che
mi faccia perdere un bel po' di tempo proprio per colpa di quella
dichiarazione :-)
Ciao, Charlie B.