W dzisiejszym poście Chciałbym poruszyć temat właściwości w języku C#.
Czym są właściwości i jak poprawnie je określać?

Let’s start.

Jak dobrze pamiętacie z wpisu o zmiennych – zmienne zadeklarowane wewnątrz klasy nazywamy polami. Właściwości są rozszerzeniem dla pól i są dostępne przy użyciu tej samej składni. Używają one tzw. akcesorów, dzięki czemu pola prywatne są dostępne z zewnątrz klasy.

To co bardzo istotne i warte zapamiętania to fakt, że Właściwości nie służą do przechowywania wartości. Przy pomocy akcesorów mają dostęp do pól, które reprezentują.

Możemy założyć, że mamy zdefiniowaną klasę o nazwie ( hmm i nastała cisza, cisza przed burzą w moim mózgu, aby na szybko wymyślić nazwę klasy, która będzie miała sens (??)… dobra mam! będzie to samochód – myślę że wybór jest ok 😉 ) Car, która ma prywatne pola: marka, model, silnik. Pola te nie mają bezpośredniego dostępu z zewnątrz danej klasy ale używając właśnie właściwości, będziemy mogli w prosty sposób uzyskać do nich dostęp.

Ale zanim o samochodzie, pokrótce wyjaśnijmy pojęcie Akcesorów.

 

Akcesory

 

Akcesor właściwości zawiera instrukcje do wykonania, które pozwalają na odczyt lub zapis wartości pola. Deklaracje właściwości mogą zawierać akcesor get, set lub oba”.

 

poniżej przedstawiam przykład poprawnego zastosowania właściwości:

 

I tak oto w prosty sposób możemy uzyskać dostęp do właściwości danego pola.

 

Właściwości abstrakcyjne

Mówiąc o właściwościach nie wypada nie wspomnieć o właściwościach abstrakcyjnych


Klasy abstrakcyjne mogą posiadać abstrakcyjne właściwości, które muszą być zaimplementowane w klasach pochodnych. Poniższy blok kodu przedstawia zastosowanie abstrakcyjnych właściwości:

hmmm…

W temacie właściwości to chyba tyle. Najważniejsze, jak dla mnie, to sposób w jaki uzyskujemy dostęp do właściwości.

Jak zawsze kod wrzucony będzie do GitHuba.

Podobało się? dajcie like’a 😉 lub piszcie i komentujcie.

Post Author: Csharpowe Zmagania

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

This site uses Akismet to reduce spam. Learn how your comment data is processed.