Saber si un objeto esta instanciado

10/04/2007 - 13:42 por Pedro | Informe spam
Como saber si un objeto de determinado tipo (clase) se encuentra
instanciado?

Ej. public static bool ExisteObjeto(string cRutaObjeto)

//Ejemplo: bool ExisteMiobjeto=ExisteObjeto("Form1.MiObjeto")

Pedro

Preguntas similare

Leer las respuestas

#11 ANT1
10/04/2007 - 16:30 | Informe spam
Perdon que me meta. Pero una duda relacionada con las referencias y
los objetos.

Cuando se pasan los parametros que sean a un metodo, por ejemplo:

public void Imprimir(string x){}

¿que le estamos pasando un clon del objeto o una referencia a este?

Mi duda en concreto, si yo al metodo "Imprimir" le paso la referencia
's' como la que ha puesto alberto en su ejemplo (string s = "Pepe";) y
dentro del metodo modifico 'x' (parametro de entrada) ¿se modifica el
objeto al que referencia 's'?

Un saludo


On 10 abr, 15:53, "Alberto Poblacion" <earthling-
wrote:
"Alfredo Novoa" wrote in message

news:

> Primero "instanciar" e "instanciado" no existen en español, y no está

Cierto, en el diccionario de la RAE no está, pero la pregunta original
era "Saber si un objeto esta instanciado". Responder a la pregunta
simplemente diciendo que esa palabra no existe es bastante poco útil para el
que realiza la pregunta. Y ya puestos a contestarla, ¿por qué no usar en la
respuesta el mismo término que utilizó el autor original, aunque sea un
barbarismo derivado del inglés "instance"?

> Y segundo, no hay ningún estandar sobre lo que significa objeto, así
> que alguien podría perfectamente decir que en:

> string s = null;

> "s" es un objeto no inicializado. Que creo que es a lo que se refiere

Justo, "s" es lo que en mi explicación yo he llamado "una referencia a
un objeto", y efectivamente le decía que si así es como lo tiene, podía
compararlo con null.

El afán de diferenciar entre la referencia y el objeto en sí se debe a
que si haces por ejemplo:
string s="Pepe";
string t=s;
entonces tenemos dos referencias, "s" y "t", que apuntan al mismo objeto
("Pepe") del cual solo existe una instancia en memoria. Es solo una cuestión
de nomenclatura, pero de alguna forma hay que distinguir entre las dos
cosas. Por ejemplo, ¿qué pasa si ahora hacemos s=null;? ¿Está instanciado el
objeto? "Pepe" sigue en memoria, y se puede alcanzar a través de la
referencia "t", a pesar de que s vale null. Si a "s" y "t" les llamamos
objetos, igual que a "Pepe", se vuelve muy complejo expresar a qué nos
estams refiriendo realmente cuando hablamos de estas cosas. No tengo
inconveniente en llamarles objetos si lo crees oportuno, pero pienso que
resulta más práctico hacer la distinción entre referencias y objetos.
Respuesta Responder a este mensaje
#12 Alfredo Novoa
10/04/2007 - 16:50 | Informe spam
On 10 Apr 2007 07:30:58 -0700, "ANT1" wrote:

Perdon que me meta. Pero una duda relacionada con las referencias y
los objetos.

Cuando se pasan los parametros que sean a un metodo, por ejemplo:

public void Imprimir(string x){}

¿que le estamos pasando un clon del objeto o una referencia a este?



Una referencia (puntero).

Mi duda en concreto, si yo al metodo "Imprimir" le paso la referencia
's' como la que ha puesto alberto en su ejemplo (string s = "Pepe";) y
dentro del metodo modifico 'x' (parametro de entrada) ¿se modifica el
objeto al que referencia 's'?



Si.


Saludos
Respuesta Responder a este mensaje
#13 ANT1
10/04/2007 - 17:04 | Informe spam
Gracias Alfredo.


On 10 abr, 16:50, Alfredo Novoa wrote:
On 10 Apr 2007 07:30:58 -0700, "ANT1" wrote:

>Perdon que me meta. Pero una duda relacionada con las referencias y
>los objetos.

>Cuando se pasan los parametros que sean a un metodo, por ejemplo:

>public void Imprimir(string x){}

>¿que le estamos pasando un clon del objeto o una referencia a este?

Una referencia (puntero).

>Mi duda en concreto, si yo al metodo "Imprimir" le paso la referencia
>'s' como la que ha puesto alberto en su ejemplo (string s = "Pepe";) y
>dentro del metodo modifico 'x' (parametro de entrada) ¿se modifica el
>objeto al que referencia 's'?

Si.

Saludos
Respuesta Responder a este mensaje
#14 Alfredo Novoa
10/04/2007 - 17:20 | Informe spam
On 10 Apr 2007 08:04:59 -0700, "ANT1" wrote:

>Mi duda en concreto, si yo al metodo "Imprimir" le paso la referencia
>'s' como la que ha puesto alberto en su ejemplo (string s = "Pepe";) y
>dentro del metodo modifico 'x' (parametro de entrada) ¿se modifica el
>objeto al que referencia 's'?

Si.





Bueno, lo que pasa es que los objetos string son inmutables y no hay
forma de modificarlos. Si modificas x lo que modificas no es el
objeto, es la referencia, por lo que el objeto al que referencia 's'
sigue igual.

Si fuese con un objeto normal entonces si se modificaría.


Saludos
Respuesta Responder a este mensaje
#15 Juan Diego Bueno
10/04/2007 - 17:28 | Informe spam
Osea, que si lo que quieres es modificar un string (que creo que es lo
que en C# se llaman tipos-valor) tendrás que usar la cláusula ref:

void Imprimir(ref string X);

Así pasas la cadena por referencia, en vez de por valor, que es la
opción por defecto. De esta forma si podría cambiarte el valor la
función.

Saludos

On 10 abr, 17:20, Alfredo Novoa wrote:
On 10 Apr 2007 08:04:59 -0700, "ANT1" wrote:

>> >Mi duda en concreto, si yo al metodo "Imprimir" le paso la referencia
>> >'s' como la que ha puesto alberto en su ejemplo (string s = "Pepe";) y
>> >dentro del metodo modifico 'x' (parametro de entrada) ¿se modifica el
>> >objeto al que referencia 's'?

>> Si.

Bueno, lo que pasa es que los objetos string son inmutables y no hay
forma de modificarlos. Si modificas x lo que modificas no es el
objeto, es la referencia, por lo que el objeto al que referencia 's'
sigue igual.

Si fuese con un objeto normal entonces si se modificaría.

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