Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

C# esta palabra clave

C# esta palabra clave

En este artículo, aprenderemos sobre esta palabra clave en C# con la ayuda de ejemplos.

En C#, this palabra clave se refiere a la instancia actual de una clase. Por ejemplo,

using System;
 
namespace ThisKeyword {
  class Test {

    int num;
    Test(int num) {
      // this.num refers to the instance field
      this.num = num;
      Console.WriteLine("object of this: " + this);
    }

    static void Main(string[] args) {

      Test t1 = new Test(4);
      Console.WriteLine("object of t1: " + t1);
      Console.ReadLine();
    }
  }
}

Salida

object of this: ThisKeyword.Test
object of t1: ThisKeyword.Test

En el ejemplo anterior, hemos creado un objeto llamado t1 de la clase Prueba . Hemos impreso el nombre del objeto t1 y this palabra clave de la clase.

Aquí, podemos ver el nombre de ambos t1 y this es el mismo. Esto se debe a que this palabra clave se refiere a la instancia actual de la clase que es t1 .


Estos son algunos de los principales usos de this palabra clave en C#.

C# esto con variables del mismo nombre

No podemos declarar dos o más variables con el mismo nombre dentro de un ámbito (clase o método). Sin embargo, las variables de instancia y los parámetros pueden tener el mismo nombre. Por ejemplo,

using System;
 
namespace ThisKeyword {
  class Test {

    int num;
    Test(int num) {

      num = num;
    }

    static void Main(string[] args) {

      Test t1 = new Test(4);
      Console.WriteLine("value of num: " + t1.num);
      Console.ReadLine();
    }
  }
}

Salida

0

En el programa anterior, la variable de instancia y el parámetro tienen el mismo nombre:num . Hemos pasado 4 como un valor para el constructor.

Sin embargo, obtenemos 0 como salida. Esto se debe a que C# se confunde porque los nombres de la variable de instancia y el parámetro son los mismos.

Podemos resolver este problema usando this .

Ejemplo:esto con variables del mismo nombre

using System;
 
namespace ThisKeyword {
  class Test {

    int num;
    Test(int num) {
      
      // this.num refers to the instance field
      this.num = num;
    }

    static void Main(string[] args) {

      Test t1 = new Test(4);
      Console.WriteLine("value of num: " +t1.num);
      Console.ReadLine();
    }
  }
}

Salida

value of num: 4

Ahora, estamos obteniendo el resultado esperado que es 4 . Es porque this.num se refiere a la variable de instancia de la clase.

Por lo tanto, no hay confusión entre los nombres de la variable de instancia y el parámetro.


Invocar constructor de la misma clase usando esto

Mientras trabajamos con la sobrecarga de constructores, es posible que tengamos que invocar un constructor desde otro constructor. En este caso, podemos usar this palabra clave. Por ejemplo,

using System;
 
namespace ThisKeyword {
  class Test {
    
    Test(int num1, int num2) {

      Console.WriteLine("Constructor with two parameter");
    }
    
    // invokes the constructor with 2 parameters
    Test(int num) : this(33, 22) {

      Console.WriteLine("Constructor with one parameter");
    }

    public static void Main(String[] args) {

      Test t1 = new Test(11); 
      Console.ReadLine();   
    }
  }
}

Salida

Constructor with two parameter
Constructor with one parameter

En el ejemplo anterior, hemos usado : seguido de this palabra clave para llamar al constructor Test(int num1, num2) del constructor Test(int num) .

Cuando llamamos al Test(int num) constructor el Test(int num1, int num2) el constructor se ejecuta primero.

Nota :llamar a un constructor desde otro constructor se conoce como encadenamiento de constructores.


C# esto como un argumento de objeto

Podemos usar this palabra clave para pasar el objeto actual como argumento a un método. Por ejemplo,

using System;
 
namespace ThisKeyword {
  class Test {
    int num1;
    int num2;
      
    Test() {
      num1 = 22;
      num2 = 33;
    }

    // method that accepts this as argument   
    void passParameter(Test t1) {
      Console.WriteLine("num1: " + num1);
      Console.WriteLine("num2: " + num2);
    }

    void display() {
      // passing this as a parameter
      passParameter(this);
    }
  
    public static void Main(String[] args) {
      Test t1 = new Test();
      t1.display();
      Console.ReadLine();
    }
  }
}

Salida

num1: 22
num2: 33

En el programa anterior, tenemos un método passParameter() . Acepta el objeto de la clase como argumento.

passParameter(this);

Aquí, hemos pasado this al parámetro() método. Como this se refiere a la instancia de la clase, podemos acceder al valor de num1 y num2 .


esto para declarar un indexador de C#

Los indexadores permiten que los objetos de una clase se indexen como matrices. Usamos esta palabra clave para declarar un indexador en C#. Por ejemplo,

using System;
namespace ThisKeyword {
      
  class Student {
      
    private string[] name = new string[3];
  
    // declaring an indexer
    public string this[int index] {

      // returns value of array element
      get {
        return name[index];
      }
      
      // sets value of array element
      set { 
        name[index] = value;
      }
    }
  }
  
  class Program {
  
    public static void Main() {
      Student s1 = new Student();
      s1[0] = "Ram";
      s1[1] = "Shyam";
      s1[2] = "Gopal";

      for (int i = 0; i < 3; i++) {

        Console.WriteLine(s1[i] + " ");
      }
    }
  }
}

Salida

Ram
Shyam
Gopal

En el programa anterior, hemos creado un indexador usando this palabra clave.

La matriz nombre[] es privado. Por lo tanto, no podemos acceder desde el Programa clase.

Ahora, para acceder y establecer el valor de la matriz, usamos un indexador.

Student s1 = new Student();
s1[0] = "Ram";
s1[1] = "Shyam";
s1[2] = "Gopal";

Como hemos usado this para crear un indexador, debemos usar el objeto del Estudiante class para acceder al indexador. Para obtener más información sobre el indexador, visite C# indexer.


Lenguaje C

  1. Pruebas de software en RTI
  2. Palabra clave estática de C#
  3. Palabra clave global de Python
  4. Java esta palabra clave
  5. Palabra clave final de Java
  6. Prueba del sensor DS18B20
  7. Tutorial del marco de automatización de pruebas de IU codificadas
  8. Caja de prueba de sensores Turck TB3-CP80
  9. Sondas de prueba magnéticas Pomona MP1
  10. Prueba de COVID-19 basada en teléfonos inteligentes
  11. Prueba de sonda voladora (FPT):conozca esta técnica de prueba de PCB