Vylepšení C#

PVA


Bc. Matěj Cajthaml — SSPŠ

©

Vylepšení C#

Typy datových typů

  • určují, jak se dané datové typy chovají
  • známe dva typy

Typy hodnot

  • datový typ určuje jednu hodnotu
  • při vytvoření nové proměnné (či při předání) se zkopíruje její hodnota
  • např. int, string, struktura a další

Odkazové typy

  • neobsahují hodnoty, ale ukazují na ně
  • při vytvoření nové proměné (či při předání) bude ukazovat na stejnou hodnotu
  • např. pole, dictionary či objekty

Typ datového typu je vždy uveden v dokumentaci. Existují další typy.

Jak se tedy tyto typy liší?

Funkce v proměnných

  • = anonymní funkce (nemají jméno)
  • můžeme ukládat funkce v proměnné
  • nedefinujeme tedy jako obyčejnou funkci či metodu
  • zapisujeme jako příkaz

Poslední argument v <> určuje datový typ výstupu. Přechozí určujou vstupní parametry. Func musí mít výstupní parametr.

Action<>

  • nemá návratový typ

K čemu se tyto funkce hodí? Kde byste je využívali?

Rozhraní

  • třída může mít určených více rozhraní
  • každé rozhraní definuje určité vlastnosti a metody, které musí třída definovat
  • poté můžeme třídu překonvertovat na dané rozhraní a volat dané metody

Obecně se rozhraním definují pouze veřejné vlastnosti a metody. Proč?

Rozhraní definují jak by metoda či vlastnost měla vypadat pro zbytek aplikace. Je jí jedno, jak ji implementujete a co používá za další věci.

Rozhraní jsou velmi podobné abstraktním třídám. Čím se liší?

K čemu se rozhraní využívají?

Gettery a settery

  • getter — získavač
  • setter — nastavovač
  • způsob validace dat uvnitř tříd
  • nastavujeme vlastnosti
  • upravujeme:
    • kdo může nastavovat / číst hodnotu (modifikátor viditelnosti)
    • jak se hodnota prečte / zapíše

K čemu se gettery a settery hodí?

Práce s gettery a settery

  • getterům a setterům můžeme nastavit viditelnost
  • např.: veřejným vlastnostem nastavíme, že je může nastavovat jen daná třída (private)

Můžeme vlastnosti nastavit zároveň viditelnost get i set?

Odstranění settteru

  • vlastnosti budeme moci nastavovat jen v konstruktoru
  • a při inicializaci

Děkuji za pozornost!

  • matej.cajthaml@ssps.cz
  • https://ssps.cajthaml.eu/