this y form1

19/01/2004 - 10:29 por José Antonio | Informe spam
Hola.

Al crear un formulario, se genera una clase Form1 que
hereda de Form. Si hago referencia a Form1 salen una pocas
propiedades pero, si hago referencia a this, salen muchas
más. ¿This no haría referencia a una instancia de la clase
Form1, ejecutado desde dicha clase? ¿Por qué salen
distintas propiedades para this y Form1?

Gracias por adelantado.
 

Leer las respuestas

#1 Adrian
19/01/2004 - 11:24 | Informe spam
Hola...

La diferencia entre this y Form1 es que this es una
referencia a la instancia actual de la clase Form1 y
Form1 es solo una clase. Digamos que la clase es un molde
del que se obtendrán una o mas copias (instancias) que
tendrán disponible una serie de métodos y propiedades,
por lo tanto, la lista de miembros que ves al
escribir 'this.' son miembros de instancia, es decir,
existe una copia de cada miembro para cada instancia de
la clase; mientras que los que ves al escribir 'Form1.'
son miembros de clase o estáticos, es decir, existe una
sola copia de cada miembro de forma única y global, algo
parecido a funciones y variables globales. Aqui va un
ejemplo, por si te enredé un poco:

class Class1
{
public static string DatabasePath=@"C:\MyDatabase.mdb";
public string FirstName;
public string LastName;

// Constructor de la clase
public Class1()
{
// Lo siguiente hace referencia a instancia actual
// e inicializa la variables de instancia
this.FirstName = "Nombre";
this.LastName = "Apellido";
// Por lo tanto cualquier instancia que se obtenga
// de Class1 tendra sus miembros FirstName y LastName
// inicializados con los mismos valores, ya que este
// código se ejecutará para cada instancia y 'this'
// será una referencia a la instancia correspondiente
}
}

class Class2
{
public static void Main(string[] args)
{
Class1 c1 = new Class1();
Class2 c2 = new Class1();

//Lo siguiente es valido
//porque FirstName es una variable de instancia
c1.FirstName = "Un nombre";

// Lo siguiente no afecta el contenido de c1.FirstName
c2.FirstName = "Otro nombre";
// porque c2 es otra copia distinta de la clase Class1

// Por lo tanto lo siguiente NO es válido
Class1.LastName = "Un apellido";
// porque existe una copia de LastName para cada
// instancia de Class1

// Mientras que si lo es
string dbPath = Class1.DatabasePath;
// porque DatabasePath es una variable estática
// es decir, existe de forma única y global y se
// accede a ella mediante Class1.DatabasePath
}
}

Lo anterior se aplica a cualquier tipo de miembro
(métodos, propiedades, variables, etc.).

Espero que ayude...

Saludos...

Hola.

Al crear un formulario, se genera una clase Form1 que
hereda de Form. Si hago referencia a Form1 salen una


pocas
propiedades pero, si hago referencia a this, salen


muchas
más. ¿This no haría referencia a una instancia de la


clase
Form1, ejecutado desde dicha clase? ¿Por qué salen
distintas propiedades para this y Form1?

Gracias por adelantado.
.

Preguntas similares