Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Linguagem C

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

  1. Palavra-chave estática C#
  2. Palavra-chave global do Python
  3. Java esta palavra-chave
  4. Palavra-chave final Java
  5. Teste o sensor DS18B20
  6. Tutorial de estrutura de automação de teste de IU codificado
  7. Caixa de teste do sensor Turck TB3-CP80
  8. Sondas de teste magnéticas Pomona MP1
  9. Teste COVID-19 baseado em smartphone
  10. Teste de sonda voadora (FPT):conheça esta técnica de teste de PCB