Menu
Coddy logo textTech

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 5x5

Das 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.

challenge icon

Aufgabe

Mittel

Vervollstä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 5x5

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());
    }
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Objektorientierte Programmierung