Share via


Het this-sleutelwoord

Het this trefwoord verwijst naar het huidige exemplaar van de klasse. Het fungeert ook als een wijzigingsfunctie voor de eerste parameter van een extensiemethode.

Notitie

In dit artikel wordt het gebruik besproken om this te verwijzen naar het ontvangerexemplaren in het huidige lid. Zie het trefwoord voor meer informatie over het extension gebruik ervan in extensiemethoden.

De C#-taalreferentiedocumenten beschrijven de meest recent uitgebrachte versie van de C#-taal. Het bevat ook de eerste documentatie voor functies in openbare previews voor de aanstaande taalrelease.

De documentatie identificeert alle functies die voor het eerst zijn geïntroduceerd in de laatste drie versies van de taal of in de huidige openbare previews.

Aanbeveling

Raadpleeg het artikel over de versiegeschiedenis van de C#-taal om te achterhalen wanneer een functie voor het eerst is geïntroduceerd in C#.

Veelvoorkomende toepassingen van this onder andere:

  • In aanmerking komende leden verborgen door vergelijkbare namen, zoals:

    public class Employee
    {
        private string alias;
        private string name;
    
        public Employee(string name, string alias)
        {
            // Use this to qualify the members of the class
            // instead of the constructor parameters.
            this.name = name;
            this.alias = alias;
        }
    }
    
  • Een object doorgeven als parameter aan andere methoden.

    CalcTax(this);
    
  • Indexeerfuncties declareren, zoals:

    public int this[int param]
    {
        get => array[param];
        set => array[param] = value;
    }
    

Statische lidfuncties bestaan op klasseniveau en niet als onderdeel van een object. Ze hebben this geen aanwijzer. Het verwijzen naar this in een statische methode is een fout.

In het volgende voorbeeld worden de parameters name en alias velden met dezelfde namen verborgen. Het this trefwoord kwalificeren deze variabelen als Employee klasseleden. Het this trefwoord geeft ook het object op voor de methode CalcTax, die deel uitmaakt van een andere klasse.

class Employee
{
    private string name;
    private string alias;

    // Constructor:
    public Employee(string name, string alias)
    {
        // Use this to qualify the fields, name and alias:
        this.name = name;
        this.alias = alias;
    }

    // Printing method:
    public void printEmployee()
    {
        Console.WriteLine($"""
        Name: {name}
        Alias: {alias}
        """);
        // Passing the object to the CalcTax method by using this:
        Console.WriteLine($"Taxes: {Tax.CalcTax(this):C}");
    }

    public decimal Salary { get; } = 3000.00m;
}

class Tax
{
    public static decimal CalcTax(Employee E)=> 0.08m * E.Salary;
}

class Program
{
    static void Main()
    {
        // Create objects:
        Employee E1 = new Employee("Mingda Pan", "mpan");

        // Display results:
        E1.printEmployee();
    }
}
/*
Output:
    Name: Mingda Pan
    Alias: mpan
    Taxes: $240.00
 */

C#-taalspecificatie

Zie de C#-taalspecificatievoor meer informatie. De taalspecificatie is de definitieve bron voor de C#-syntaxis en het gebruik.

Zie ook