Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V jazyce C# je definice typu – třídy, struktury nebo záznamu – podobná podrobnému plánu, který určuje, co může typ dělat. Objekt je v podstatě blok paměti přidělený a nakonfigurovaný podle podrobného plánu. Tento článek obsahuje přehled těchto podrobných plánů a jejich funkcí. Další článek v této sérii představuje objekty.
Zapouzdření
Zapouzdření se někdy označuje jako první pilíř nebo princip objektově orientovaného programování. Třída nebo struktura může určit, jak přístupný je každý z jejich členů pro kód mimo třídu nebo strukturu. Členy, které nejsou určené pro uživatele mimo třídu nebo sestavení, jsou skryté, aby omezily potenciál chyb kódování nebo škodlivých zneužití. Další informace naleznete v kurzu objektově orientované programování .
Členové
Členy typu zahrnují všechny metody, pole, konstanty, vlastnosti a události. V jazyce C# neexistují žádné globální proměnné ani metody, protože existují v některých dalších jazycích. I vstupní bod programu, metoda Main
, musí být deklarován v rámci třídy nebo struktury (implicitně při použití příkazů na nejvyšší úrovni).
Následující seznam obsahuje všechny druhy členů, které lze deklarovat ve třídě, struktuře nebo záznamu.
- Polí
- Konstanty
- Vlastnosti
- Metody
- Konstruktory
- Události
- Finalizátory
- Indexátory
- Operátoři
- Vnořené typy
Další informace najdete v tématu Členové.
Přístupnost
Některé metody a vlastnosti by měly být volány nebo přístupné z kódu mimo třídu nebo strukturu, který se označuje jako klientský kód. Jiné metody a vlastnosti mohou být pouze pro použití v samotné třídě nebo struktuře. Je důležité omezit přístupnost kódu tak, aby se k němu mohl dostat jenom zamýšlený klientský kód. Pomocí následujících modifikátorů přístupu určíte, jak přístupné typy a jejich členové mají klientský kód:
Výchozí přístupnost je private
.
Dědičnost
Třídy (ale ne struktury) podporují koncept dědičnosti. Třída odvozená z jiné třídy, která se nazývá základní třída, automaticky obsahuje všechny veřejné, chráněné a interní členy základní třídy s výjimkou jejích konstruktorů a finalizátorů.
Třídy lze deklarovat jako abstraktní, což znamená, že jedna nebo více metod nemají žádnou implementaci. I když abstraktní třídy nelze přímo instancovat, mohou sloužit jako báze pro jiné třídy, které poskytují chybějící implementaci. Třídy lze také deklarovat jako zapečetěné , aby se zabránilo tomu, že ostatní třídy zdědí z nich.
Další informace naleznete v tématu Dědičnost a polymorfismus.
Rozhraní
Třídy, struktury a záznamy mohou implementovat více rozhraní. Implementace z rozhraní znamená, že typ implementuje všechny metody definované v rozhraní. Další informace naleznete v tématu Rozhraní.
Obecné typy
Třídy, struktury a záznamy lze definovat pomocí jednoho nebo více parametrů typu. Klientský kód zadá typ, když vytvoří instanci typu. Například List<T> třída v System.Collections.Generic oboru názvů je definována s jedním parametrem typu. Klientský kód vytvoří instanci List<string>
nebo List<int>
, aby určil typ, který seznam obsahuje. Další informace najdete v tématu Obecné typy.
Statické typy
Třídy (ale ne struktury nebo záznamy) lze deklarovat jako static
. Statická třída může obsahovat pouze statické členy a nelze vytvořit instanci s klíčovým slovem new
. Při načítání programu se do paměti načte jedna kopie třídy a její členy jsou přístupné prostřednictvím názvu třídy. Třídy, struktury a záznamy mohou obsahovat statické členy. Další informace naleznete v tématu Statické třídy a statické členy třídy.
Vnořené typy
Třídu, strukturu nebo záznam lze vnořit do jiné třídy, struktury nebo záznamu. Další informace naleznete v tématu Vnořené typy.
Částečné typy
Část třídy, struktury nebo metody můžete definovat v jednom souboru kódu a další části v samostatném souboru kódu. Další informace naleznete v části Částečné třídy a metody.
Inicializátory objektů
Vytvořením instance a inicializace třídy nebo struktur objektů a kolekcí objektů můžete přiřadit hodnoty k jeho vlastnostem. Další informace naleznete v tématu Jak inicializovat objekty pomocí inicializátoru objektů.
Anonymní typy
V situacích, kdy není vhodné nebo nutné vytvořit pojmenovanou třídu, používáte anonymní typy. Pojmenované datové členy definují anonymní typy. Další informace naleznete v tématu Anonymní typy.
Členové rozšíření
Třídu můžete rozšířit bez vytvoření odvozené třídy vytvořením samostatného typu. Tento typ obsahuje metody, které lze volat, jako by patřily k původnímu typu. Další informace naleznete v tématu Rozšiřující metody.
Implicitně typované lokální proměnné
V rámci třídy nebo metody struktury můžete pomocí implicitního psaní dát kompilátoru pokyn k určení typu proměnné v době kompilace. Další informace najdete v tématu var (referenční dokumentace jazyka C#).
Záznamy
Modifikátor můžete přidat record
do třídy nebo struktury. Záznamy jsou typy s předdefinovaným chováním rovnosti, která je založená na hodnotách. Záznam (buď record class
nebo record struct
) poskytuje následující funkce:
- Stručná syntaxe pro vytvoření referenčního typu s neměnnými vlastnostmi
- Rovnost hodnot. Dvě proměnné typu záznamu jsou stejné, pokud mají stejný typ, a pokud jsou pro každé pole hodnoty v obou záznamech stejné. Třídy používají rovnost odkazu: dvě proměnné typu třídy jsou stejné, pokud odkazují na stejný objekt.
- Stručná syntaxe pro nedestruktivní mutaci.
Výraz
with
umožňuje vytvořit novou instanci záznamu, která je kopií existující instance, ale se změněnými zadanými hodnotami vlastností. - Integrované formátování pro zobrazení
Metoda
ToString
vytiskne název typu záznamu a názvy a hodnoty veřejných vlastností. - Podpora hierarchií dědičnosti ve třídách záznamů Třídy záznamů podporují dědičnost. Struktury záznamů nepodporují dědičnost.
Další informace naleznete v tématu Záznamy.
Specifikace jazyka C#
Další informace najdete ve specifikaci jazyka C#. Specifikace jazyka je konečným zdrojem syntaxe a použití jazyka C#.