Tipo de dato Integer u objeto Integer

29/09/2006 - 16:25 por tenerife | Informe spam
Buenos días

¿A nadie le molesta que podamos definir una veriable entera de esta forma...
Dim i as Integer
i= 5

que realmente es también un objeto cuando le interesa... y que otros objetos
los tengamos que definir de esta otra forma...
Dim p as Persona
p = New Persona()
p.setNombre("David")

En el primer caso se supone que ocupa un espacio de memoria fijo, en el
segundo la cantidad de memoria no se conoce a priori por lo que se almacenan
en zonas diferentes de memoria.

¿Cuando realmente estamos con el Integer tipo de datos básico entero y
cuando con el objeto? Con el tipo Persona sé que siempre estoy con el
objeto... Si el Integer es objeto, dónde está el New que se requiere cuando
se crea un objeto...

Perdonen pero el nuevo VB.NET no me parece nada didáctico y creo que es muy
confuso. Cual es el sentido de todo esto?

¿Vosotros qué opinais?

Saludos
David
 

Leer las respuestas

#1 Alberto Poblacion
29/09/2006 - 17:24 | Informe spam
"tenerife" wrote in message
news:
¿Cuando realmente estamos con el Integer tipo de datos básico entero y
cuando con el objeto? Con el tipo Persona sé que siempre estoy con el
objeto... Si el Integer es objeto, dónde está el New que se requiere
cuando
se crea un objeto...



Es una de las primeras cosas que se enseñan en los cursos introductorios
de .Net cuando se estudian los tipos de variables. Hay dos tipos, que se
llaman "tipos valor" (por ejemplo, el Integer) y "tipos referencia" (tu tipo
Persona), y cada una de las dos clases tiene sus peculiares características
y comportamientos.
El tipo "Object" permite guadar dentro cualquier clase de tipo valor o
tipo referencia, pero el comportamiento es distinto en cada caso: cuando
guardas un tipo referencia se guarda directamente, pero cuando guardas un
tipo valor, se produce una operación, bastante costosa en tiempo de CPU, que
se denomina "Boxing", y que mueve el valor desde su almacenamiento en el
stack o el data segment al Heap (la zona donde se guardan los tipos
referencia). Cuando se hace la operación contraria, el proceso se llama
"unboxing" y es también bastante costoso. Todo esto lo hacen el compilador y
el CLR sin que nos tengamos que preocupar de ello, pero es conveniente
tenerlo en cuenta porque si se hacen muchas operaciones de Boxing y Unboxing
se perjudicará el rendimiento del programa.
La respuesta a tu pregunta "Si el Integer es objeto, dónde está el New",
es que el New se produce automáticamente como parte de la operación de
Boxing cuando guardas el Integer dentro de un Object, y que si no lo guardas
en un Object, entonces no se almacena en el Heap y en consecuencia no
necesita el New que hace la reserva de memoria en el Heap (las reservas en
el Stack son fijas y se hacen en tiempo de compilación).

Preguntas similares