Resumo : neste tutorial, você aprenderá sobre a palavra-chave this
em C# e como usá-la de forma eficaz.
O que é a palavra-chave this em C#
Uma classe é um modelo para a criação de objetos. Para referenciar o objeto atual dentro da classe, você usa a palavra-chave this
. Portanto, a palavra-chave this
refere-se à instância atual da classe.
Para referenciar explicitamente um campo dentro de um método de uma classe, você usa a palavra-chave this
, seguida pelo operador ponto (.
) e o nome do campo assim:
this.FieldName
Linguagem de código: C# ( cs )
Da mesma forma, você pode usar a palavra-chave this
para chamar explicitamente um método em outro método da classe:
this.MethodName(arguments)
Linguagem de código: C# ( cs )
Exemplo de como usar a palavra-chave this em C#
O exemplo a seguir define a classe Person
com os campos FirstName
e LastName
e dois métodos GetFullName()
e SayHi()
:
// Person.cs
class Person
{
public string FirstName;
public string LastName;
public string GetFullName()
{
return $"{this.FirstName} {this.LastName}";
}
public string SayHi()
{
return $"Hi, I'm {this.GetFullName()}.";
}
}
Linguagem de código: C# ( cs )
Neste exemplo, usamos a palavra-chave this
para fazer referência aos campos FirstName
e LastName
no método GetFullName()
. Além disso, usamos a palavra-chave this
para chamar o método GetFullName()
no método SayHi()
.
O seguinte cria uma nova instância da classe Person
e chama o método SayHi()
:
// Program.cs
// Create a new instance of the Person class
Person p1 = new();
p1.FirstName = "John";
p1.LastName = "Doe";
// Show the fullname
Console.WriteLine(p1.GetFullName());
// Display the greeting
Console.WriteLine(p1.SayHi());
Linguagem de código: C# ( cs )
Ao chamar o método p1.GetFullName()
, a palavra-chave this
faz referência ao objeto p1
. Portanto, os campos FirstName
e LastName
são "John"
e e"Doe"
respectivamente.
O método SayHi()
chama o método GetFullName()
por meio da palavra-chave this
. Portanto, o método p1.GetFullName()
retorna a string "John Doe"
. Portanto, o método SayHi()
retorna a string "Hi, I'm John Doe."
.
Usando palavra-chave this do C# para encadeamento de métodos
O exemplo a seguir adiciona dois novos métodos SetFirstName()
e SetLastName()
à classe Person
:
// Person.cs
class Person
{
public string FirstName;
public string LastName;
public string GetFullName()
{
return $"{this.FirstName} {this.LastName}";
}
public string SayHi()
{
return $"Hi, I'm {this.GetFullName()}.";
}
public Person SetFirstName(string firstName)
{
this.FirstName = firstName;
return this;
}
public Person SetLastName(string lastName)
{
this.LastName = lastName;
return this;
}
}
Linguagem de código: C# ( cs )
Neste exemplo, os métodos SetFirstName()
e SetLastName()
atribuem seus argumentos aos campos FirstName
e LastName
e retornam a instância atual da classe Person
.
O seguinte cria um novo objeto Person
, chama os métodos SetFirstName()
, SetLastName()
e SayHi()
:
// Program.cs
Person p1 = new();
p1.SetFirstName("John");
p1.SetLastName("Doe");
string greeting = p1.SayHi();
Console.WriteLine(greeting);
Linguagem de código: C# ( cs )
Como ambos os métodos SetFirstName()
e SetLastName()
retornam o objeto Person
corrente, você pode substituir três instruções por uma instrução como segue:
// Program.cs
Person p1 = new();
string greeting = p1.SetFirstName("John")
.SetLastName("Doe")
.SayHi();
Console.WriteLine(greeting);
Linguagem de código: C# ( cs )
Essa técnica é chamada de encadeamento de métodos .
Como funciona.
O SetFirstName()
método retorna this
que é o p1
objeto:
p1.SetFirstName("John");
Linguagem de código: C# ( cs )
No entanto, você não precisa usar uma variável imediata para armazenar p1. E você pode chamar imediatamente SetLastName()
o p1
objeto assim:
p1.SetFirstName("John")
.SetLastName("Doe");
Linguagem de código: C# ( cs )
Como o método SetLastName()
também retorna this
aquele objeto p1
, você pode chamar o método SayHi()
nele imediatamente. Como o método SayHi()
retorna uma string, você pode atribuí-la à variável greeting
:
// Program.cs
Person p1 = new();
string greeting = p1.SetFirstName("John")
.SetLastName("Doe")
.SayHi();
Console.WriteLine(greeting);
Linguagem de código: C# ( cs )
Resumo
- A palavra-chave
this
do C# refere-se ao objeto atual da classe. - Use a palavra-chave
this
do C# para encadeamento de métodos para tornar o código mais conciso.