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

Preguntas similare

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).
Respuesta Responder a este mensaje
#2 Eduardo Alvarado Meza
29/09/2006 - 18:07 | Informe spam
Todos los tipos de datos heredan de System.Object, pero de esto a que sea
exigido un constructor... no lo creo.
Respuesta Responder a este mensaje
#3 Patrizio
02/10/2006 - 19:26 | Informe spam
David,

En términos muy simples como tu lo mencionas correctamente cuando creas un
objeto este siempre se comporta como objeto, pero cuando creas un "tipo de
dato" este no siempre se comporta como tal.
¿Cuándo se comporta como referencia (data type) y cuando como valor (object)?
Mientras lo uses como variable ejemplo:

valor1 = valor2 ó
metodo(valor1, valor2)

Se comportará como datatype, pero si haces referencia a uno de sus métodos
automáticamente ocurre el boxing y todo el cambio a nivel de memoria
relacionado con este proceso. Ejemplo:

valor1.ToString()

Y si vuelves a utilizar valor1 como datatype ocurre el broceso de unboxing.

Ahora el proceso de boxing y unboxing no es la personificación del diablo ni
mucho menos, es un comportamiento inherente dentro de .Net Framework. Sólo
hay que conocer este tipo de comportamiento para no cometer errores como por
ejemplo los cuales donde el boxing y unboxing ocurren dentro de estructuras
de loop donde si pueden afectar negativamente el rendimiento de una
aplicación.

Espero que te sea de utilidad :-)



"tenerife" wrote:

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

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida