Dentro del código de cualquier
método de un objeto siempre es posible hacer referencia al propio objeto usando
la palabra reservada this. Esto puede venir bien a la hora de escribir constructores de objetos
debido a que permite que los nombres que demos a los parámetros del constructor
puedan coincidir nombres de los campos del objeto sin que haya ningún problema.
Por ejemplo, el constructor de la clase Persona escrito anteriormente se puede
reescribir así usando this:
Persona (string Nombre, int Edad,
string NIF)
{
this.Nombre
= Nombre;
this.Edad
= Edad;
this.NIF = NIF;
}
Es decir, dentro de un método con
parámetros cuyos nombres coincidan con campos, se da preferencia a los
parámetros y para hacer referencia a los campos hay que prefijarlos con el this
tal y como se muestra en el ejemplo.
El ejemplo anterior puede que no
resulte muy interesante debido a que para evitar tener que usar this
podría haberse escrito el constructor tal y como se mostró en la primera
versión del mismo: dando nombres que empiecen en minúscula a los parámetros y
nombres que empiecen con mayúsculas a los campos. De hecho, ese es el convenio
que Microsoft recomienda usar. Sin embargo, como más adelante se verá sí que puede
ser útil this
cuando los campos a inicializar a sean privados, ya que el convenio de
escritura de identificadores para campos privados recomendado por Microsoft
coincide con el usado para dar identificadores a parámetros (obviamente otra
solución sería dar cualquier otro nombre a los parámetros del constructor o los
campos afectados, aunque así el código perdería algo legibilidad)
Un uso más frecuente de this
en C# es el de permitir realizar llamadas a un método de un objeto desde código
ubicado en métodos del mismo objeto. Es decir, en C# siempre es necesario que
cuando llamemos a algún método de un objeto precedamos al operador .
de alguna expresión que indique cuál es el objeto a cuyo método se desea
llamar, y si éste método pertenece al mismo objeto que hace la llamada la única
forma de conseguir indicarlo en C# es usando this.
Finalmente, una tercera utilidad
de this
es permitir escribir métodos que puedan devolver como objeto el
propio objeto sobre el que el método es aplicado. Para ello bastaría usar una
instrucción return
this; al indicar el objeto a devolver