Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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 name
och 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.