deze (C#-verwijzing)
Het this
trefwoord verwijst naar het huidige exemplaar van de klasse en wordt ook gebruikt als een wijziging van de eerste parameter van een extensiemethode.
Notitie
In dit artikel wordt het gebruik van this
klasse-exemplaren besproken. Zie Extensiemethoden voor meer informatie over het gebruik ervan in extensiemethoden.
Hier volgen veelvoorkomende toepassingen van this
:
Als u leden wilt kwalificeren die zijn verborgen door vergelijkbare namen, bijvoorbeeld:
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; } }
Als u een object als parameter wilt doorgeven aan andere methoden, bijvoorbeeld:
CalcTax(this);
Als u indexeerfuncties wilt declareren, bijvoorbeeld:
public int this[int param] { get { return array[param]; } set { array[param] = value; } }
Statische lidfuncties, omdat ze bestaan op klasseniveau en niet als onderdeel van een object, hebben this
geen aanwijzer. Het is een fout waarnaar wordt verwezen this
in een statische methode.
Opmerking
In dit voorbeeld this
wordt gebruikt om de Employee
klasseleden name
in aanmerking te laten komen en alias
, die zijn verborgen door vergelijkbare namen. Het wordt ook gebruikt om een object door te geven aan de methode CalcTax
, die deel uitmaakt van een andere klasse.
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
*/
C#-taalspecificatie
Zie de C#-taalspecificatie voor meer informatie. De taalspecificatie is de definitieve bron voor de C#-syntaxis en het gebruik.