Newsgroup: it.comp.lang.visual-basic
Titolo: [.net] Variabili e loro occupazione

Salve,
come consigliato da alcuni partecipanti al ng, sono passato allo studio di
vb.net
 dopo essermi fatto un'infarinatura di VB6.
A differenza di prima quando facevo il "praticone", ora vorrei capire meglio
i concetti alla base della programmazione, incomincero' quindi con alcune
domande stupidissime (per voi) :-)
Il primo argomento che vorrei chiarire riguarda le variabili e la loro
occupazione in byte.
Tipo Boolean 4 byte (!!!)
Se una variabile boolean puo' contenere solo true o false, dovrebbe aver
necessita' di un solo bit, a che servono 4 byte?
Quale e' il vantaggio di usare una boolean quando si potrebbe usare una Byte
assegnandole un 1 o 0 e risparmiando 3 byte?
Tipo Object 4 byte (dal libro di F.Balena)
Per la Object (una variant in VB6), mi sembrano pochini 4 byte, visto che
possono contenere una marea di roba..... oppure si tratta di 4 byte + il
contenuto?
Se cosi' fosse, ammettiamo che in una object voglia registrare un dato
string (che occupa 10 + 2 * len(str)), cosa avrei, 4 + 10 + 2* len(str) ?
Grazie per la prima lezione di .net :-))))
Maurizio

 contenuto?
Esatto, 4 byte di puntatore (finchè non saremo in win64).
Poi il resto è molto... empirico :)

 Maurizio
no, attenzione, in quei 4 byte non c'č l'oggetto vero e proprio, quanto un
puntatore all'oggetto, cioč l'indirizzo di memoria in cui č memorizzato
l'oggetto. Se leggi il passaggio dei parametri alle funzioni o alle Sub ti
chiarisci le idee. Quando passi un parametro ByRef, ne passi il puntatore:
questo vuol dire che non passi realmente l'oggetto, ma passi una cosa che
dice: "ecco, il tuo oggetto si trova all'indirizzo pincopallino, prendilo e
lavoraci su". in questo modo, č tutto piů veloce.....
good coding!!!
-- 
Alletun
Sorry, ask me if you want to get my e-mail!

 puntatore all'oggetto [...] Quando passi un parametro ByRef, ne passi il
puntatore:
...
Ok, capito, pero'.... questo potrebbe essere valido anche per gli altri tipi
di dati, quindi quei 4 byte dovrei trovarmeli in ogni tipo di variabile,
invece cio' non accade... perche'?
Grazie.... Maurizio

necessita' di un solo bit, a che servono 4 byte?
Qua risultano 2 byte.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdamth01_2.asp
Ciao!

 Grazie.... Maurizio
però dei tipi di dati fondamentali la struttura è nota e sarà sempre quella.
Faccio degli esempi perchè a memoria non li ricordo.
il boolean è 2 byte.....
Il Long è 4 byte, e sarà sempre così.
Invece di un oggetto non sai a priori l'occupazione in memoria. Una textbox
occupa una certa quantità di bytes, mentre l'activex di Flash è sempre un
oggetto, ma occupa molto di più......
questo è il motivo: di un oggetto tu hai un puntatore, che indica la
collocazione dell'oggetto in memoria. di una variabile, invece, indichi
direttamente la collocazione in memoria, c'è un passaggio di meno, diciamo,
proprio perchè tu sai quanto occupa un tipo di dato.......


Perche in .NET esistono i value types e reference types, per i primi, la
variabile contiene il valore vero e proprio (ecco perchè la lunghezza
cambia) per gli altri invece la variabile contiene un puntatore all'area
managed dove si trova l'oggetto vero e proprio.
HTH
-- 
Corrado Cavalli [Microsoft .NET MVP-MCP]
UGIdotNET - 
http://www.ugidotnet.org
Weblog: 
http://www.ugidotnet.org/710.blog

 Il Long è 4 byte, e sarà sempre così.
In VB6 sì...
In 
VB.NET
 il Long é di 8 byte!
...e non escluderei che possa aumentare con l'aumentare di numero bit dei
registri dei processori.
    Ciao
        Allanon
-- 
- SPAMKILLER
 lasciate il NOSPAM nell'indirizzo: 
itlangv...@michele.sytes.net
 e lasciate la parola SPAMKILLER nel corpo dell'email

 Qua risultano 2 byte.
...
Anche sulla guida in linea di 
vs.net
 risultano 2 byte (come era in VB6),
probabilmente un errore di stampa del libro.
Ciao... Maurizio

managed dove si trova l'oggetto vero e proprio.
references types...Se in Microsoft non ci mettono del loro non sono
contenti, non potevano chiamarli semplicemente puntatori ? :-)
Ciao :-)
Stefano "HappyMan" (Lago Maggiore - NO)
--
Personal Web 
http://www.sgr.info
Email happyman69 (at) 
despammed.com

 contenti, non potevano chiamarli semplicemente puntatori ? :-)
Puntatore è un valore che punta ad un indirizzo al quale si trova il
reference type quindi non sono esattamente la stessa cosa...
E il value type come lo chiameresti? :-)


E il value type come lo chiameresti? :-)
Non mi sono mai posto il problema :-))


Un attimo prima di essere skippato pare che  Rossignol abbia scritto:
A queste domande ti hanno risposto quindi cambio argomento e vado in OT:
il tuo nick ha a che fare con lo SCI?
-- 
Alex
"La differenza tra un genio ed un idiota č che il genio ha i suoi
limiti" (Anonimo)
Posted from X-Privat Free NNTP server - 
www.x-privat.org

 il tuo nick ha a che fare con lo SCI?
...
Piu' precisamente con i miei 9S dualtek acquistati qualche anno fa.
Peccato che la mia tecnica sia al livello del mio VB :-))
Ciao...Maurizio

 pc=&c  e' il reference type, ma per me e' il puntatore...
"pensare in C" non e' di quelle cose che mi viene spontanee :-), quelle
pero' sono variabili, non tipi... nel tuo esempio 'int' e' il value type e
'int *' il reference type
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown