Dela via


detta (C#-referens)

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

Kommentar

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

Följande är vanliga användningsområden för 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 { return 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.

Exempel

I det här exemplet this används för att kvalificera Employee klassmedlemmarna och namealias, som är dolda med liknande namn. Det används också för att skicka ett objekt till metoden CalcTax, som tillhör en annan klass.

class Employee
{
    private string name;
    private string alias;
    private decimal salary = 3000.00m;

    // 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: {0}\nAlias: {1}", name, alias);
        // Passing the object to the CalcTax method by using this:
        Console.WriteLine("Taxes: {0:C}", Tax.CalcTax(this));
    }

    public decimal Salary
    {
        get { return salary; }
    }
}

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

class MainClass
{
    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