pregunta corta2

04/11/2003 - 15:22 por Josema | Informe spam
Hola a todos y disculpar por la pregunta...soy muy nuevo
aqui...

Yo siempre he usado string, int, bool, array, etc...

alguien podria decirme para que se usa el tipo object...y
como se usa...

object myobj=new object();
Muchas Gracias.
Josema

Preguntas similare

Leer las respuestas

#1 JMCU
04/11/2003 - 16:51 | Informe spam
Bueno el tipo object es el tipo base de todo. Todo puede ser guardado en un
objeto. Todos los tipos de datos predefinidos y creados por el usuario
heredan implicitamente de esta clase o tipo

Ejemplo:

http://msdn.microsoft.com/library/d...sref/html/
vcgrfobject.asp

Saludos



"Josema" escribió en el mensaje
news:10ec01c3a2df$2419e770$
Hola a todos y disculpar por la pregunta...soy muy nuevo
aqui...

Yo siempre he usado string, int, bool, array, etc...

alguien podria decirme para que se usa el tipo object...y
como se usa...

object myobj=new object();
Muchas Gracias.
Josema
Respuesta Responder a este mensaje
#2 Juan Cristóbal Olivares C.
04/11/2003 - 17:43 | Informe spam
Una variable object se puede utilizar para almacenar cualquier tipo de
objeto.

Todos los elementos heredan de object, es por esto que podemos hacer algo
como:

object[] arreglo = new object { new Exception (), new Int32 (), new Object
() };

Todos los elementos son almacenados como objects, pero aquí hay dos
problemas:

1.- Rendimiento: los elementos tienen que ser encapsulados (boxing) hacia
object y, para volver a usarlos, hay que desencapsularlos. Esto baja el
rendimiento de la aplicación.
2.- Tipos Incompatibles: Podríamos, por error, tratar de transformar un
objeto en Exception, cuando realmente lo creamos como un Int32, esto no se
puede hacer y nos arrojaría un error.

Por esto, es mejor utilizar lo menos posible el tipo object directamente. En
la próxima versión de c# se podrán utilizar genéricos.

http://www.juancri.com/notas/nota.html?id

Atte,
Juan C. Olivares
www.juancri.com


"Josema" escribió en el mensaje
news:10ec01c3a2df$2419e770$
Hola a todos y disculpar por la pregunta...soy muy nuevo
aqui...

Yo siempre he usado string, int, bool, array, etc...

alguien podria decirme para que se usa el tipo object...y
como se usa...

object myobj=new object();
Muchas Gracias.
Josema
Respuesta Responder a este mensaje
#3 Michael Giagnocavo [MVP]
05/11/2003 - 16:06 | Informe spam
object[] arreglo = new object { new Exception (), new Int32 (), new Object
() };

Todos los elementos son almacenados como objects, pero aquí hay dos
problemas:

1.- Rendimiento: los elementos tienen que ser encapsulados (boxing) hacia
object y, para volver a usarlos, hay que desencapsularlos. Esto baja el
rendimiento de la aplicación.



Bueno, solo los ValueTypes tendran que ser boxeados (el Int32 en este caso).
Los otros elementos (tipos referencia) seran almacenados directamente
(stelem.ref).

-mike
MVP
Respuesta Responder a este mensaje
#4 Juan Cristóbal Olivares C.
05/11/2003 - 18:29 | Informe spam
No es así. Cuando un tipo es transformado a un tipo base, también se realiza
un boxing.

"Michael Giagnocavo [MVP]" escribió en el mensaje
news:uNg$
> object[] arreglo = new object { new Exception (), new Int32 (), new


Object
> () };
>
> Todos los elementos son almacenados como objects, pero aquí hay dos
> problemas:
>
> 1.- Rendimiento: los elementos tienen que ser encapsulados (boxing)


hacia
> object y, para volver a usarlos, hay que desencapsularlos. Esto baja el
> rendimiento de la aplicación.

Bueno, solo los ValueTypes tendran que ser boxeados (el Int32 en este


caso).
Los otros elementos (tipos referencia) seran almacenados directamente
(stelem.ref).

-mike
MVP


Respuesta Responder a este mensaje
#5 Michael Giagnocavo [MVP]
07/11/2003 - 06:56 | Informe spam
using System;
class c1 {
public static void Main() {
object[] arreglo = new object[] { new Exception(), new Int32(), new
Object() };
}
}

Compilar con CSC. ILDASM:
.method public hidebysig static void Main() cil managed
{
.entrypoint
// Code size 35 (0x23)
.maxstack 3
.locals init (object[] V_0,
object[] V_1)
IL_0000: ldc.i4.3
IL_0001: newarr [mscorlib]System.Object
IL_0006: stloc.1
IL_0007: ldloc.1
IL_0008: ldc.i4.0
IL_0009: newobj instance void [mscorlib]System.Exception::.ctor()
IL_000e: stelem.ref
IL_000f: ldloc.1
IL_0010: ldc.i4.1
IL_0011: ldc.i4.0
IL_0012: box [mscorlib]System.Int32
IL_0017: stelem.ref
...
IL_0022: ret
} // end of method c1::Main

Dime, donde esta el box para el Exception? Boxing solo existe para
ValueTypes. Como puedes ver, para tipos referencia, no es necesario hacer
un box. Ni es posible.

-mike
MVP


"Juan Cristóbal Olivares C." wrote in message
news:
No es así. Cuando un tipo es transformado a un tipo base, también se


realiza
un boxing.

"Michael Giagnocavo [MVP]" escribió en el mensaje
news:uNg$
> > object[] arreglo = new object { new Exception (), new Int32 (), new
Object
> > () };
> >
> > Todos los elementos son almacenados como objects, pero aquí hay dos
> > problemas:
> >
> > 1.- Rendimiento: los elementos tienen que ser encapsulados (boxing)
hacia
> > object y, para volver a usarlos, hay que desencapsularlos. Esto baja


el
> > rendimiento de la aplicación.
>
> Bueno, solo los ValueTypes tendran que ser boxeados (el Int32 en este
caso).
> Los otros elementos (tipos referencia) seran almacenados directamente
> (stelem.ref).
>
> -mike
> MVP
>
>


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida