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
- Pruebas de software en RTI
- Palabra clave estática de C#
- Palabra clave global de Python
- Java esta palabra clave
- Palabra clave final de Java
- Prueba del sensor DS18B20
- Tutorial del marco de automatización de pruebas de IU codificadas
- Caja de prueba de sensores Turck TB3-CP80
- Sondas de prueba magnéticas Pomona MP1
- Prueba de COVID-19 basada en teléfonos inteligentes
- Prueba de sonda voladora (FPT):conozca esta técnica de prueba de PCB