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}"
Probier 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. EigenschaftenKonstruktorenObjektinitialisiererWiederholung – Einfacher Taschenrechner4Vererbung
Grundlegende Vererbungs-(:)-SyntaxDas „base“-Schlüsselwort„virtual“- und „override“-SchlüsselwörterVersiegelte KlassenDie „object“-BasisklasseWiederholung – Mitarbeiterhierarchie7Erweiterte Funktionen
Überladen von OperatorenIndexer (this[])ToString()-ÜberschreibungErweiterungsmethodenRückblick – Benutzerdefinierte Liste10Entwurfsmuster Teil 1
Einführung in EntwurfsmusterThread-sicheres SingletonFactory-MusterObserver-Muster (Events)Strategy-Muster13Abschließende Herausforderungen
E-Learning-PlattformKomponente für SpielfigurenFahrzeugvermietungsdienst2Eigenschaften & statische Member
Automatisch implementierte EigenschaftenNur lesbare/schreibbare EigenschaftenStatische Felder & MethodenStatische KlassenMember mit Ausdruckskörpern5Polymorphie & Interfaces
Compile- vs. Laufzeit-PolymorphieInterface vs. abstrakte KlasseMehrere InterfacesExplizite InterfacesUpcasting & DowncastingWiederholung – Formenrechner3Klassenarchitektur
Instanz- vs. statische DatenSchlüsselwörter 'readonly' & 'const'Backing FieldsRückblick – Bankkontenverwaltung6Kapselung
ZugriffsmodifikatorenEigenschaften zur KapselungImplementierung der DatenkapselungMuster für UnveränderlichkeitRückblick – SchülerdatenÜbe selbstständig: Online-C#-Compiler