Differenza tra tipi REFERENZE E VALUE

domenica 04 marzo 2012 - 14.32
Tag Elenco Tags  C#  |  VB.NET  |  .NET 4.0  |  Windows 7  |  Visual Studio 2010

zirobyte75 Profilo | Newbie

Devo scrivere una breve descrizione tra questi due tipi. Documentandomi ho scritto un breve trafiletto, ma credo che sia incompleto. Volevo la vostra opinione e magari aiuto. INOLTRE CORTESEMENTE SE MI AIUTATE A TROVARE QUALCOSA O MI AIUTATE A SPIEGARE come creare un tipo VALUE e uno REFERENCE. GRAZIE!!!!


ISTANZIARE UN OGGETTO:
Istanziare un oggetto, significa CREARLO. Si crea un nuoivo oggetto con l'istruzione DIM Oggetto as New Object ... NEW crea fisicamente l'oggetto in memoria.

TIPI REFERENCE, VALUE e NOTHING:
Ogni cosa nel Framework è un oggetto e la maggior parte di questi oggetti, sono tipi REFERENCE ovvero tutti quei tipi DERIVATI dalla classe System.Object
Attraverso l'istruzione di assegnamento "=" es. A=100 il valore 100 viene inserito nella casella di memoria che la variabile occupa. Con l'utilizzo dei tipi REFERENCE questo non accade. COn l'utilizzo dell'uguale per assegnare un valore alle variabili, anzichè il "valore", viene inserito nell'area di memoria un PUNTATORE. Il puntatore è una speciale variabile, che anzichè contenere il valore, contiene un indirizzo, di una detrminata area di memoria, che contiene altri dati. Il puntaore viene memorizzato sullo STACK, mentre l'oggetto viene creato e inserito in un area di memoria differente(Heap Managed).

NOTHING: Questà è una costante di tipo Reference che rappresenta l'assenza di un oggetto. Porre un variabile a Nothing equivale a distruggerla.

TIPI VALUE:
Ogni variabile di tipo VALUE deriva dalla classe System.ValueType che deriva da System.Object, ma ne ridefinisce i metodi. Questo tipo di variabili, contengono l'effettivo valore e non un punatatore a questo. Questo tipo presentano un vanataggio in termini di memoria e velocità: occupano meno spazio e non vi è la necessità di referenziare un puntatore per ottenere o impostare i valori(nota: referenziare un puntaore significa recarsi all'indirizzo di memoria puntato e leggerne il contenuto). Se la variabile viene distrutta, cessa di esistere all'istante e non è necessario attuare nessun rilascio delle risorse.

VERIFICARE SE UN OGGETTO ESISTE O SE E' LA COPIA DI UN ALTRO:
Quando si lavora con i tipi Reference, occorre prestare molta attenzione quando si utilizzano gli operatori di assegnamento. I tipi Reference, come abbiamo già detto contengono un puntatore, quindi con le istruzioni:
Dim A,B As Object
A=B

A non avrà un valore identico a B ma un PUNTATORE alla stessa area di memoria di B ... in altre parole sono lo stesso oggetto! Per verificare che lo siano, si utilizza l'operatore IS che permette di verificare che due variabili, puntino allo stesso oggetto.
Ad esempio MsgBox(A Is B) darà come risultato True.
Se utilizziamo invece Is per comparare un oggetto a Nothing, stiamo dicendo di verificare che l'oggetto sia stato distrutto.

Quanto appena detto, non vale per i tipi Value. Quando ad un tipo Value si assegna un altro valore utilizzando l'operatore "=", si passa ad esso una COPIA del valore.

Quando possibile è meglio utilizzare i tipi Value, in quanto non sprecano risorse e tempo.


MANCA QUALCOSA?

se riesci a pensarlo puoi anche realizzarlo!
http://www.youtube.com/user/zirobyte75
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5