Dela via


Det här nyckelordet

Nyckelordet this refererar till den aktuella instansen av klassen och används också som modifierare för den första parametern i en tilläggsmetod.

Anmärkning

I den här artikeln beskrivs användningen av this med klassinstanser. Mer information om dess användning i tilläggsmetoder finns i nyckelordet extension .

Följande är vanliga användningar av this:

  • Om du vill kvalificera medlemmar som är dolda med liknande namn, till exempel:

    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;
        }
    }
    
  • Så här skickar du ett objekt som en parameter till andra metoder, till exempel:

    CalcTax(this);
    
  • Så här deklarerar du indexerare, till exempel:

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

Statiska medlemsfunktioner, eftersom de finns på klassnivå och inte som en del av ett objekt, har this ingen pekare. Det är ett fel att referera till this i en statisk metod.

I det här exemplet parametrarna nameoch alias dölj fält med samma namn. Nyckelordet this kvalificerar dessa variabler som Employee klassmedlemmar. Nyckelordet this anger också objektet för metoden CalcTax, som tillhör en annan klass.

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
 */

Språkspecifikation för C#

Mer information finns i C#-språkspecifikationen. Språkspecifikationen är den slutgiltiga källan för C#-syntax och -användning.

Se även