Właściwości automatyczne
Część sekcji Programowanie obiektowe ścieżki C# w Coddy. Lekcja 10 z 70.
Właściwości implementowane automatycznie pozwalają deklarować właściwości bez pisania jawnych pól zapasowych. Kompilator automatycznie tworzy ukryte pole prywatne.
Zamiast pisać ten rozwlekły kod:
public class Product
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
}Możesz po prostu napisać:
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
public int Quantity { get; set; }
}Możesz też ustawić wartości domyślne bezpośrednio w deklaracji:
public class Product
{
public string Name { get; set; } = "Unnamed";
public decimal Price { get; set; } = 0.0m;
public bool IsAvailable { get; set; } = true;
}Właściwości implementowane automatycznie są idealne, gdy nie potrzebujesz walidacji ani własnej logiki w akcesorze pobierającym lub ustawiającym. Dzięki nim Twoje klasy są przejrzyste, a ilość powtarzalnego kodu znacząco się zmniejsza.
Wyzwanie
ŁatwyZbudujmy prosty system magazynowy, który wykorzystuje właściwości implementowane automatycznie do śledzenia produktów w sklepie.
Utworzysz dwa pliki, aby uporządkować kod:
Item.cs: Zdefiniuj klasęItemw przestrzeni nazwInventoryz właściwościami implementowanymi automatycznie:Name(string),Price(decimal) iInStock(bool). Ustaw wartości domyślne:Namepowinno mieć domyślnie wartość"Unknown",Price—0.0m, aInStock—true.Program.cs: W pliku głównym utwórz dwa obiektyItemza pomocą inicjalizatorów obiektów. Odczytaj z wejścia nazwę i cenę każdego produktu, a następnie wyświetl szczegóły każdego z nich.
Otrzymasz cztery dane wejściowe:
- Nazwę pierwszego produktu
- Cenę pierwszego produktu
- Nazwę drugiego produktu
- Cenę drugiego produktu
Wyświetl każdy produkt w następującym formacie:
Item: {Name}, Price: {Price}, In Stock: {InStock}Na przykład, jeśli danymi wejściowymi są Laptop, 999.99, Mouse i 25.50, wynik powinien wyglądać następująco:
Item: Laptop, Price: 999.99, In Stock: True
Item: Mouse, Price: 25.50, In Stock: TrueSpróbuj swoich sił
using System;
using Inventory;
class Program
{
public static void Main(string[] args)
{
// Wczytaj dane wejściowe dla pierwszego przedmiotu
string name1 = Console.ReadLine();
decimal price1 = Convert.ToDecimal(Console.ReadLine());
// Wczytaj dane wejściowe dla drugiego przedmiotu
string name2 = Console.ReadLine();
decimal price2 = Convert.ToDecimal(Console.ReadLine());
// TODO: Utwórz dwa obiekty Item za pomocą inicjalizatorów obiektów
// Ustaw właściwości Name i Price na podstawie wartości wejściowych
// TODO: Wypisz szczegóły każdego przedmiotu w formacie:
// Item: {Name}, Price: {Price}, In Stock: {InStock}
}
}
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