Menu
Coddy logo textTech

Słowo kluczowe „this”

Część sekcji Programowanie obiektowe ścieżki C# w Coddy. Lekcja 4 z 70.

Słowo kluczowe this odnosi się do bieżącej instancji klasy. Służy do uzyskiwania dostępu do składowych instancji i rozróżniania parametrów oraz pól o tej samej nazwie.

Użyj this, aby odróżnić pola od parametrów

public class Person
{
    private string name;
    private int age;
    
    public Person(string name, int age)
    {
        this.name = name;
        this.age = age;
    }
}

Bez this parametr przesłaniałby pole

// To nie zadziała zgodnie z oczekiwaniami
public Person(string name, int age)
{
    name = name;  // Przypisuje parametr samemu sobie!
    age = age;    // Przypisuje parametr samemu sobie!
}

Używaj this z właściwościami

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}");
    }
}

Użyj this, aby wywołać inny konstruktor w tej samej klasie

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 dla kwadratów
    public Rectangle(int size) : this(size, size)
    {
    }
}

Przykładowe użycie:

Rectangle rect = new Rectangle(5, 10);
Rectangle square = new Rectangle(5);  // Tworzy 5x5

Słowo kluczowe this zawsze odnosi się do bieżącej instancji obiektu. Jest szczególnie przydatne, gdy nazwy parametrów są takie same jak nazwy pól lub właściwości, dzięki czemu kod jest bardziej czytelny i nie dochodzi do błędów.

challenge icon

Wyzwanie

Średni

Uzupełnij klasę Product, dodając konstruktor, który używa słowa kluczowego this do przypisywania wartości parametrów do właściwości. Zaimplementuj również metodę GetDescription(), używając this do uzyskiwania dostępu do właściwości.

Metoda GetDescription() powinna zwracać: "{Name} costs ${Price}"

Spróbuj swoich sił

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 iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator C# online