Das 'this'-Schlüsselwort
Teil des Abschnitts Objektorientierte Programmierung der C#-Journey von Coddy — Lektion 4 von 70.
Das Schlüsselwort this bezieht sich auf die aktuelle Instanz einer Klasse. Es wird verwendet, um auf Instanzmitglieder zuzugreifen und zwischen Parametern und Feldern mit demselben Namen zu unterscheiden.
Verwenden Sie this, um zwischen Feldern und Parametern zu unterscheiden
public class Person
{
private string name;
private int age;
public Person(string name, int age)
{
this.name = name;
this.age = age;
}
}Ohne this würde der Parameter das Feld überlagern
// Dies wird nicht wie erwartet funktionieren
public Person(string name, int age)
{
name = name; // Weist den Parameter sich selbst zu!
age = age; // Weist den Parameter sich selbst zu!
}Verwenden Sie this mit Eigenschaften
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
public Product(string name, decimal price)
{
this.Name = name;
this.Price = price;
}
public void DisplayInfo()
{
Console.WriteLine($"{this.Name}: ${this.Price}");
}
}Verwenden Sie this, um einen anderen Konstruktor in derselben Klasse aufzurufen
public class Rectangle
{
public int Width { get; set; }
public int Height { get; set; }
public Rectangle(int width, int height)
{
this.Width = width;
this.Height = height;
}
// Konstruktor für Quadrate
public Rectangle(int size) : this(size, size)
{
}
}Beispielhafte Verwendung:
Rectangle rect = new Rectangle(5, 10);
Rectangle square = new Rectangle(5); // Erzeugt 5x5Das Schlüsselwort this bezieht sich immer auf die aktuelle Objektinstanz. Es ist besonders nützlich, wenn Parameternamen mit Feld- oder Eigenschaftsnamen übereinstimmen, was Ihren Code klarer macht und Fehler verhindert.
Aufgabe
MittelVervollständigen Sie die Klasse Product, indem Sie einen Konstruktor hinzufügen, der das Schlüsselwort this verwendet, um Parameterwerte an Eigenschaften zuzuweisen. Implementieren Sie außerdem die Methode GetDescription() unter Verwendung von this, um auf die Eigenschaften zuzugreifen.
Die Methode GetDescription() sollte Folgendes zurückgeben: "{Name} costs ${Price}"
Spickzettel
Das Schlüsselwort this bezieht sich auf die aktuelle Instanz einer Klasse und wird verwendet, um auf Instanzmitglieder zuzugreifen.
Verwenden Sie this, um zwischen Feldern und Parametern mit demselben Namen zu unterscheiden:
public class Person
{
private string name;
private int age;
public Person(string name, int age)
{
this.name = name;
this.age = age;
}
}Ohne this überschattet der Parameter das Feld und weist sich selbst den Wert zu:
// Das wird nicht wie erwartet funktionieren
public Person(string name, int age)
{
name = name; // Weist den Parameter sich selbst zu!
age = age; // Weist den Parameter sich selbst zu!
}Verwenden Sie this mit Eigenschaften:
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
public Product(string name, decimal price)
{
this.Name = name;
this.Price = price;
}
public void DisplayInfo()
{
Console.WriteLine($"{this.Name}: ${this.Price}");
}
}Verwenden Sie this, um einen anderen Konstruktor in derselben Klasse aufzurufen (Konstruktorverkettung):
public class Rectangle
{
public int Width { get; set; }
public int Height { get; set; }
public Rectangle(int width, int height)
{
this.Width = width;
this.Height = height;
}
// Konstruktor für Quadrate
public Rectangle(int size) : this(size, size)
{
}
}
Rectangle square = new Rectangle(5); // Erstellt 5x5Probier es selbst
using System;
class Program
{
static void Main()
{
string name = Console.ReadLine();
decimal price = decimal.Parse(Console.ReadLine());
Product product = new Product(name, price);
Console.WriteLine($"Product: {product.Name}");
Console.WriteLine($"Price: ${product.Price}");
Console.WriteLine(product.GetDescription());
}
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Objektorientierte Programmierung
1Grundlagen der OOP
Externe DateienNamespaces & DirektivenEinführung in Klassen & ObjekteDas 'this'-SchlüsselwortMethoden und ParameterFelder vs. EigenschaftenKonstruktorenObjekt-InitialisiererZusammenfassung - Einfacher Taschenrechner4Vererbung
Grundlagen der Vererbung (:) SyntaxDas 'base'-SchlüsselwortVirtual & Override SchlüsselwörterVersiegelte KlassenDie 'object'-BasisklasseZusammenfassung – Mitarbeiter-Hierarchie7Fortgeschrittene Funktionen
OperatorüberladungIndexer (this[])ToString() überschreibenErweiterungsmethodenZusammenfassung - Benutzerdefinierte Liste2Eigenschaften & Statische Member
Automatisch implementierte EigenschaftenRead-Only- & Write-Only-EigenschaftenStatische Felder & MethodenStatische KlassenExpression-Bodied Member5Polymorphismus & Interfaces
Compile- vs. Runtime-PolymorphismusInterface vs. abstrakte KlasseMehrfache InterfacesExplizite InterfacesUpcasting & DowncastingRecap – Shape Calculator3Klassenarchitektur
Instanz- vs. statische Daten'readonly' & 'const' SchlüsselwörterBacking FieldsZusammenfassung - Bankkonto-Manager6Kapselung
ZugriffsmodifikatorenProperties zur KapselungImplementierung von Data HidingImmutability-MusterRückblick – Studierendendaten