IRONSOFTWAREHOME
ATUALIZAÇÕES DO DESENVOLVEDOR

C# Isto (Como funciona para desenvolvedores)

Curtis Chau
Curtis Chau
Updated: 23 de abril de 2026

Existe uma palavra-chave específica em C# que possui uma importância especial: a palavra-chave this. Essa palavra-chave se refere à instância de classe atual onde é usada. Pode ser usado para distinguir entre variáveis ​​de nível de classe e parâmetros de método que compartilham o mesmo nome, entre outras coisas. Por exemplo, se você tiver uma variável de instância e um parâmetro de método com o mesmo nome, this pode ser um salva-vidas!

Os fundamentos desta palavra-chave

Em uma classe pública, como Employee, por exemplo, você pode ter variáveis de instância públicas como id ou name. Se você quiser atribuir valores a essas variáveis ​​de instância dentro de um método, poderá se deparar com um problema comum: e se os parâmetros do método tiverem o mesmo nome que as variáveis ​​de instância?

Aqui está uma solução: Use a palavra-chave this na documentação C#! No exemplo a seguir de um método dentro da classe pública Employee, a palavra-chave this é usada para distinguir entre as variáveis de instância e os parâmetros do método que compartilham os mesmos nomes.

public class Employee
{
    private int id;
    private string name;
    
    public void Display(int id, string name)
    {
        // Use `this.id` to refer to the instance variable, 
        // and `id` for the method parameter.
        this.id = id;
        this.name = name;
    }
}

Neste caso, this.id refere-se à variável de instância, e id é o parâmetro do método.

this Palavra-chave em Sobrecarga de Construtor

Aproveitando a palavra-chave this, a sobrecarga de construtor torna-se uma técnica poderosa dentro da mesma classe. Quando uma classe, como uma classe Student, tem vários construtores com parâmetros variados, a palavra-chave this permite que um construtor chame outro, eliminando a necessidade de código redundante.

Considere o exemplo a seguir onde this é usado em um construtor parametrizado:

public class Student
{
    private string name;
    private int id;

    public Student() : this("Default", 0)
    {
        // Default constructor delegates to the parameterized constructor
        // with "Default" as the name and 0 as the id.
    }

    public Student(string name, int id)
    {
        // Assign the parameters to the instance variables
        this.name = name;
        this.id = id;
    }
}

No construtor sem parâmetros, this("Default", 0) chama o construtor parametrizado, definindo Default como o nome e 0 como o ID.

Explorando this em Métodos de Extensão

Os métodos de extensão em C# fornecem uma maneira de adicionar métodos a tipos existentes sem modificar o tipo original. É aqui que a palavra-chave this faz algo mágico. É usado na lista de parâmetros do método de extensão para se referir ao tipo que está sendo estendido.

Considere o seguinte exemplo de um método de extensão:

public static class StringExtensions
{
    // This extension method can be called on any string instance
    public static bool IsNullOrEmpty(this string str)
    {
        return string.IsNullOrEmpty(str);
    }
}

Aqui, this string str informa ao C# que este é um método de extensão para o tipo string. Agora você pode usar este método em qualquer objeto string, como if(myString.IsNullOrEmpty()).

this em Indexadores

A palavra-chave this também pode ser usada na definição de indexadores. Um indexador permite que instâncias de uma classe sejam indexadas da mesma forma que arrays. Isso permite acessar dados dentro de objetos usando uma notação semelhante a um índice. Em um indexador, this é seguido por um índice de array, que geralmente é int index.

Aqui está um exemplo básico de um indexador:

public class Test
{
    private int[] array = new int[100];

    // Define an indexer for the class
    public int this[int index]
    {
        get { return array[index]; }
        set { array[index] = value; }
    }
}

Nesta classe Test, a palavra-chave this define um indexador que pode ser usado para obter ou definir valores no campo de instância array.

this e Membros Estáticos

Uma coisa a observar sobre this é que não pode ser usado para referenciar membros ou métodos estáticos. Isso se deve ao fato de que this refere-se à instância atual, e os membros estáticos pertencem à própria classe, não a uma instância da classe.

public class Program
{
    public static void Main(string[] args)
    {
        // Can't use `this` here, because 'Main' is a static method.
    }
}

Então, lembre-se, this é para instâncias, não para membros de classe ou estáticos!

this Palavra-chave e Propriedades

Assim como variáveis de instância e parâmetros de método, a palavra-chave this também pode ser usada com propriedades. Em C#, uma propriedade é um membro que fornece um mecanismo flexível para ler, escrever ou calcular o valor de um campo privado. As propriedades podem ser usadas como se fossem membros de dados públicos, mas na verdade são métodos especiais chamados acessadores.

Vamos dar uma olhada em um exemplo simples usando this em uma propriedade:

public class Employee
{
    private string name;

    public string Name
    {
        get { return this.name; }
        set { this.name = value; } // Use `this` to refer to the instance variable
    }
}

Na classe acima, a palavra-chave this é usada para se referir à string privada name nos acessadores get e set da propriedade Name.

Exploring this and Delegates

Outro lugar onde this aparece é em delegados. Em C#, um delegate é semelhante a um ponteiro de função em C ou C++. É uma variável de tipo referência que armazena a referência a um método. Métodos delegados, assim como métodos de extensão, podem usar this para acessar a instância atual.

Aqui está um exemplo de um delegado usando this:

public delegate void DisplayDelegate();

public class Student
{
    public int Id { get; set; }
    public string Name { get; set; }

    public void Display()
    {
        // `this.DisplayDetails` refers to the method instance of the current object.
        DisplayDelegate displayDelegate = new DisplayDelegate(this.DisplayDetails);
        displayDelegate();
    }

    private void DisplayDetails()
    {
        Console.WriteLine("ID: " + Id + ", Name: " + Name);
    }
}

Na classe estudante, this.DisplayDetails cria uma nova instância do delegado que se refere ao método DisplayDetails do objeto atual.

Implementando this Palavra-chave com IronPDF

Vamos nos aprofundar em um exemplo onde você pode usar a palavra-chave this em conjunto com IronPDF, uma poderosa biblioteca .NET para edição e criação de arquivos PDF usando HTML.

Considere uma classe chamada PDFHandler que utiliza a biblioteca IronPDF para realizar várias operações em arquivos PDF:

using IronPdf;

public class PDFHandler
{
    private string path;

    public PDFHandler(string path)
    {
        this.path = path;
    }

    public void GeneratePDF(string content)
    {
        // Creating a renderer to convert HTML content to PDF
        var Renderer = new IronPdf.ChromePdfRenderer();
        var PDF = Renderer.RenderHtmlAsPdf(content);
        
        // Save the generated PDF to the path specified by the current instance
        PDF.SaveAs(this.path);
    }
}

Nesta classe PDFHandler, a palavra-chave this é usada para se referir ao campo path da instância atual. Este campo é utilizado para salvar o PDF gerado no caminho especificado.

Quando criamos uma nova instância de PDFHandler e chamamos o método GeneratePDF, a palavra-chave this nos permite utilizar o path especificado durante a criação do objeto:

class Program
{
    static void Main(string[] args)
    {
        // Initialize PDFHandler with a specified file path
        PDFHandler pdfHandler = new PDFHandler("C:\\ThisKeyword.pdf");
        pdfHandler.GeneratePDF("Hello World!");
    }
}

Aqui, this torna o código mais legível e compreensível, especialmente ao lidar com bibliotecas como IronPDF.

C# Isto (Como Funciona Para Desenvolvedores) Figura 1

Conclusão

Até agora, você deve ter uma boa compreensão da palavra-chave this em C#, incluindo seus amplos usos, desde variáveis de instância simples até contextos complexos como construtores, métodos de extensão, propriedades, delegados, métodos anônimos e até mesmo ao usar bibliotecas populares como IronPDF.

Lembre-se, o IronPDF oferece um período de IronPDF gratuito , para que você possa colocar em prática tudo o que aprendeu hoje. Se você decidir continuar com isso, as licenças começam a partir de apenas $999. O IronPDF pode ser uma adição valiosa ao seu conjunto de ferramentas de desenvolvimento C#, simplificando a tarefa de manipular arquivos PDF em seus aplicativos.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.

...
Leia mais

Artigos relacionados

Key in blue circle

Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.

Your trial license will be sent to your email address

Sem limitações. 100% desbloqueado. Sem cartão de crédito.

bullet_checkedNão é necessário cartão de crédito nem criação de conta.Sem limitações. 100% desbloqueado. Sem cartão de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Agende sua demonstração ao vivo gratuita.
Booking Badge

Aprovado por milhões de engenheiros em todo o mundo.

Logotipos dos clientes da Iron Software
Agende sua consulta sem compromisso.
Preencha o formulário abaixo ou envie um e-mail para sales@ironsoftware.com
Os seus dados serão sempre mantidos em sigilo.
Aprovado por milhões de engenheiros em todo o mundo.
Logotipos dos clientes da Iron Software
Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.
Não é necessário cartão de crédito nem criação de conta.