none
Cual es la diferencia de usar o no "this"?

    Question

  • hola, soy nuevo en visual C# y noto que gran parte de los ejemplos mostrados en el foro utilizan el identificador this. antes del objeto dentro de una clase (ej:this.textBox1.Text = "  ";)
    yo nunca lo usé y nunca tuve ningún problema.
    (ej:
    textBox1.Text = "  ";)

    Cual es la diferencia entre usarlo o no?
    Wednesday, April 25, 2007 6:13 PM

Answers

  • Bueno Toni me a vas permitir que te lleve la contraria Wink, si hay diferencia y mas vale un ejemplo que mil palabras:

     

    Supongamos que tenemos una clase llamada Prueba con una variable privada de tipo string llamada texto y el constructor  acepta una variable de tipo string llamada texto (usease de la misma manera que la variable privada de la clase) y se la asignamos a la variable privada de la clase texto como se muestra en el ejemplo, pero, A quien se la estamos asignando realmente???

     

    Code Snippet

    public class Prueba

    {

    private string texto = String.Empty;

    public Prueba(string texto)

    {

    texto = texto;

    }

    }

     

    Si pegamos el código en el IDE de VS veremos que estamos asignando el valor del parametro texto al parametro texto y no a la variable privada texto.

     

    Pero entonces como lo solucionamos sin cambiar el nombre del parametro que recibimos???

     

    Pues la solución es el uso de this:

    Code Snippet

    public class Prueba

    {

    private string texto = String.Empty;

    public Prueba(string texto)

    {

    this.texto = texto;

    }

    }

     

    que hace referencia a la variable de tipo string texto, con lo cual en este caso si existe diferencia Wink

     

    Salu2

    Colabora con el foro: Si la respuesta te es de utilidad marca la pregunta como respondida.

    Luis Ruiz Pavón

    MCP

    Blog: http://geeks.ms/blogs/lruiz

    Thursday, April 26, 2007 7:35 AM
  • Para otra cosa que sirve es para que se habilite el autocompletar en caso de no tener la versión completa del Visual.. En caso de tener SharpDevelop no funciona el autocompletar si no se introduce el "this"
    Sunday, April 29, 2007 3:25 PM

All replies

  • No hay ninguna diferencia, pero los hay que les gusta indicar de la forma más concreta posible las referencias a identificadores.

     

    Para gustos, colores...

    Wednesday, April 25, 2007 7:05 PM
  • Bueno Toni me a vas permitir que te lleve la contraria Wink, si hay diferencia y mas vale un ejemplo que mil palabras:

     

    Supongamos que tenemos una clase llamada Prueba con una variable privada de tipo string llamada texto y el constructor  acepta una variable de tipo string llamada texto (usease de la misma manera que la variable privada de la clase) y se la asignamos a la variable privada de la clase texto como se muestra en el ejemplo, pero, A quien se la estamos asignando realmente???

     

    Code Snippet

    public class Prueba

    {

    private string texto = String.Empty;

    public Prueba(string texto)

    {

    texto = texto;

    }

    }

     

    Si pegamos el código en el IDE de VS veremos que estamos asignando el valor del parametro texto al parametro texto y no a la variable privada texto.

     

    Pero entonces como lo solucionamos sin cambiar el nombre del parametro que recibimos???

     

    Pues la solución es el uso de this:

    Code Snippet

    public class Prueba

    {

    private string texto = String.Empty;

    public Prueba(string texto)

    {

    this.texto = texto;

    }

    }

     

    que hace referencia a la variable de tipo string texto, con lo cual en este caso si existe diferencia Wink

     

    Salu2

    Colabora con el foro: Si la respuesta te es de utilidad marca la pregunta como respondida.

    Luis Ruiz Pavón

    MCP

    Blog: http://geeks.ms/blogs/lruiz

    Thursday, April 26, 2007 7:35 AM
  • Efectívamente, existe la diferencia que comenta Luis, y hace muy bien en corregirme.

     

    En todo caso, en lo personal, considero que repetir identificadores es algo inaceptable...  ... con lo que para mí sigue siendo lo mismo...

     

    Un saludo!

     

    Thursday, April 26, 2007 7:40 AM
  • Para otra cosa que sirve es para que se habilite el autocompletar en caso de no tener la versión completa del Visual.. En caso de tener SharpDevelop no funciona el autocompletar si no se introduce el "this"
    Sunday, April 29, 2007 3:25 PM