C# esta palavra-chave
C# esta palavra-chave
Neste artigo, aprenderemos sobre essa palavra-chave em C# com a ajuda de exemplos.
Em C#, this
palavra-chave refere-se à instância atual de uma classe. Por exemplo,
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();
}
}
}
Saída
object of this: ThisKeyword.Test object of t1: ThisKeyword.Test
No exemplo acima, criamos um objeto chamado t1 da classe Teste . Imprimimos o nome do objeto t1 e
this
palavra-chave da classe. Aqui, podemos ver o nome de ambos t1 e
this
é o mesmo. Isso ocorre porque this
palavra-chave refere-se à instância atual da classe que é t1 . Aqui estão alguns dos principais usos de
this
palavra-chave em C#. C# this with Same Name Variables
Não podemos declarar duas ou mais variáveis com o mesmo nome dentro de um escopo (classe ou método). No entanto, variáveis de instância e parâmetros podem ter o mesmo nome. Por exemplo,
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();
}
}
}
Saída
0
No programa acima, a variável de instância e o parâmetro têm o mesmo nome:num . Passamos 4 como um valor para o construtor.
No entanto, estamos recebendo 0 como saída. Isso ocorre porque o C# fica confuso porque os nomes da variável de instância e do parâmetro são os mesmos.
Podemos resolver esse problema usando
this
. Exemplo:isso com variáveis de mesmo nome
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();
}
}
}
Saída
value of num: 4
Agora, estamos obtendo a saída esperada que é 4 . É porque
this.num
refere-se à variável de instância da classe. Portanto, não há confusão entre os nomes da variável de instância e o parâmetro.
Invoca construtor da mesma classe usando isto
Ao trabalhar com sobrecarga de construtor, podemos ter que invocar um construtor de outro construtor. Nesse caso, podemos usar
this
palavra-chave. Por exemplo,
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();
}
}
}
Saída
Constructor with two parameter Constructor with one parameter
No exemplo acima, usamos
:
seguido por this
palavra-chave para chamar o construtor Test(int num1, num2)
do construtor Test(int num)
. Quando chamamos o
Test(int num)
construtor o Test(int num1, int num2)
construtor executa primeiro. Observação :Chamar um construtor de outro construtor é conhecido como encadeamento de construtores.
C# this como um argumento de objeto
Podemos usar
this
palavra-chave para passar o objeto atual como um argumento para um método. Por exemplo,
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();
}
}
}
Saída
num1: 22 num2: 33
No programa acima, temos um método passParameter() . Ele aceita o objeto da classe como um argumento.
passParameter(this);
Aqui, passamos
this
para o passParameter() método. Como this
refere-se à instância da classe, podemos acessar o valor de num1 e num2 . isto para declarar um indexador C#
Indexadores permitem que objetos de uma classe sejam indexados como arrays. Usamos essa palavra-chave para declarar um indexador em C#. Por exemplo,
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] + " ");
}
}
}
}
Saída
Ram Shyam Gopal
No programa acima, criamos um indexador usando
this
palavra-chave. A matriz nome[] é privado. Portanto, não podemos acessá-lo a partir do Program classe.
Agora, para acessar e definir o valor do array, usamos um indexador.
Student s1 = new Student();
s1[0] = "Ram";
s1[1] = "Shyam";
s1[2] = "Gopal";
Como usamos
this
para criar um indexador, devemos usar o objeto da classe Student class para acessar o indexador. Para saber mais sobre o indexador, visite indexador C#. Linguagem C
- Palavra-chave estática C#
- Palavra-chave global do Python
- Java esta palavra-chave
- Palavra-chave final Java
- Teste o sensor DS18B20
- Tutorial de estrutura de automação de teste de IU codificado
- Caixa de teste do sensor Turck TB3-CP80
- Sondas de teste magnéticas Pomona MP1
- Teste COVID-19 baseado em smartphone
- Teste de sonda voadora (FPT):conheça esta técnica de teste de PCB