Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Klíčové slovo this
odkazuje na aktuální instanci třídy a používá se také jako modifikátor prvního parametru metody rozšíření.
Poznámka:
Tento článek popisuje použití this
s instancemi třídy. Další informace o jeho použití v rozšiřujících metodách naleznete v klíčovém slově extension
.
Toto jsou běžná použití this
:
Aby bylo možné kvalifikovat členy skryté podobnými jmény, například:
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; } }
Předání objektu jako parametru jiným metodám, například:
CalcTax(this);
Deklarace indexerů, například:
public int this[int param] { get => array[param]; set => array[param] = value; }
Statické členské funkce, protože existují na úrovni třídy, a ne jako součást objektu, nemají this
ukazatel. Je chybou odkazovat na this
ve statické metodě.
V tomto příkladu parametry name
a alias
skryjte pole se stejnými názvy. Klíčové this
slovo kvalifikuje tyto proměnné jako Employee
členy třídy. Klíčové this
slovo také určuje objekt pro metodu CalcTax
, která patří do jiné třídy.
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
*/
Specifikace jazyka C#
Další informace najdete ve specifikaci jazyka C# . Specifikace jazyka je konečným zdrojem syntaxe a použití jazyka C#.