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 5x5Sł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.
Wyzwanie
ŚredniUzupeł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());
}
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Programowanie obiektowe
1Podstawy programowania obiektowego
Pliki zewnętrznePrzestrzenie nazw i dyrektywyWprowadzenie do klas i obiektówSłowo kluczowe „this”Metody i parametryPola a właściwościKonstruktoryInicjalizatory obiektówPodsumowanie — prosty kalkulator4Dziedziczenie
Podstawowa składnia dziedziczenia (:)Słowo kluczowe 'base'Słowa kluczowe virtual i overrideKlasy sealedBazowa klasa 'object'Powtórzenie – hierarchia pracowników7Zaawansowane funkcje
Przeciążanie operatorówIndeksery (this[])Nadpisywanie ToString()Metody rozszerzającePodsumowanie – własna lista2Właściwości i składowe statyczne
Właściwości automatyczneWłaściwości tylko do odczytu i zapisuPola i metody statyczneKlasy statyczneSkładowe z ciałem wyrażeniowym5Polimorfizm i interfejsy
Polimorfizm czasu kompilacji a czasu wykonaniaInterfejs a klasa abstrakcyjnaWiele interfejsówJawne implementowanie interfejsówRzutowanie w górę i w dółPowtórka — kalkulator kształtów8Zaawansowane koncepcje OOP
Kompozycja zamiast dziedziczeniaTypy generyczne (klasy i metody)Delegaty i zdarzeniaAtrybuty i refleksjaIDisposable i instrukcja usingPodstawy wstrzykiwania zależności11Wzorce projektowe, część 2
Wzorzec poleceniaWzorzec adapteraWzorzec dekoratoraWzorzec metody szablonowejWzorzec stanuWzorzec kompozytu3Architektura klas
Dane instancji a dane statyczneSłowa kluczowe 'readonly' i 'const'Pola zapasowePowtórzenie — menedżer kont bankowych6Hermetyzacja
Modyfikatory dostępuWłaściwości w hermetyzacjiImplementacja ukrywania danychWzorce niezmiennościPowtórka — dane studentów9Argumenty zmiennej liczby
Słowo kluczowe „params”Parametry opcjonalneArgumenty nazwanePrzeciążanie metodPoćwicz samodzielnie: Kompilator C# online