Sdílet prostřednictvím


Třídy a struktur (Příručka programování C#)

Třídy a struktur jsou dva základní konstrukce common type system v.NET Framework.Každá je v podstatě datová struktura, která je zahrnuta sada dat a chování, které patří dohromady jako logická jednotka.Data a chování jsou členy třídy nebo struktura, a zahrnují metody, vlastnosti a události a podobně, jak je uvedeno dále v tomto tématu.

Třídy nebo struct prohlášení je o jakousi slouží k vytvoření instance nebo objekty v době spuštění.Při definování třídy nebo struct nazývá Person, Person je název typu.Je-li deklarovat a inicializuje proměnnou p typu Person, p je označováno jako objektu nebo instanci Person.Více instancí stejného Person typu lze vytvořit a každá instance může mít různé hodnoty v polích a vlastnosti.

Třída je typ odkazu.Při vytvoření objektu třídy proměnné, které je přiřazena objekt obsahuje pouze odkaz na paměti, že.Pokud je odkaz na objekt přiřazeno nové proměnné, novou proměnnou odkazuje na původní objekt.Změny provedené v jedné proměnné se projeví v jiné proměnné, protože obě odkazují na stejná data.

Struktura je typ hodnoty.Při vytvoření struktura proměnné, které je přiřazena struktura obsahuje skutečná data struct.Když struktura je přiřazen proměnné nové, se zkopíruje.Nové proměnné a původní proměnné proto obsahovat dvě oddělené kopie stejná data.Změny provedené v jedné kopie neovlivní ostatní kopie.

Třídy jsou obecně slouží k modelování složitějších chování nebo dat, který má být změněn po vytvoření objektu třídy.Struktur jsou nejvhodnější pro malé datové struktury, které obsahují především data, která nejsou určena k změnit po vytvoření struktura.

Další informace naleznete v tématu Třídy (Příručka programování C#), Objekty (Příručka programování C#) a Struktur (Příručka programování C#).

Příklad

V následujícím příkladu MyCustomClass je definován třemi členy na nejvyšší úrovni ProgrammingGuide oboru názvů.Instance (objekt) MyCustomClass je vytvořena Main metoda v Program třídy a metody a vlastnosti objektu jsou přístupné pomocí zápis s tečkou.

    namespace ProgrammingGuide
    {
        // Class definition.
        public class MyCustomClass
        {
            // Class members:
            // Property.
            public int Number { get; set; }

            // Method.
            public int Multiply(int num)
            {
                return num * Number;
            }

            // Instance Constructor.
            public MyCustomClass()
            {
                Number = 0;
            }
        }
        // Another class definition. This one contains
        // the Main method, the entry point for the program.
        class Program
        {
            static void Main(string[] args)
            {
                // Create an object of type MyCustomClass.
                MyCustomClass myClass = new MyCustomClass();

                // Set the value of a public property.
                myClass.Number = 27;

                // Call a public method.
                int result = myClass.Multiply(4);
            }
        }
    }

Zapouzdření

Zapouzdření je někdy označován jako první pilíř nebo zásadě objektově orientované programování.Podle principu zapouzdření třídě nebo struktuře můžete určit jak přístupné každému ze svých členů kód mimo třídu nebo struct.Metody a proměnných, které nejsou určeny pro použití mimo z třídy nebo sestavení lze omezit potenciál pro kódování se zlými úmysly zneužití chyby nebo skrýt.

Další informace o třídách naleznete v Třídy (Příručka programování C#) a Objekty (Příručka programování C#).

ms173109.collapse_all(cs-cz,VS.110).gifČleny

Všechny metody, polí, konstanty, vlastnosti a události musí být deklarována v rámci typu; nazývají členy třídy nebo struct.V jazyce C# jsou žádné globální proměnné nebo metody existují v některých jiných jazycích.I aktualizaci programu Vstupní bod Main metoda, musí být deklarovány uvnitř třídy nebo struct.Následující seznam obsahuje všechny různé druhy členů, které mohou být deklarovány v třídě nebo struktuře.

ms173109.collapse_all(cs-cz,VS.110).gifPřístupnost

Některé vlastnosti a metody jsou určeny jako nazývá nebo z kódu mimo třídu nebo struct, známé jako kód klienta.Jiné metody a vlastnosti mohou být pouze pro třídy nebo struct, sám.Je důležité omezit dostupnost kódu tak, aby pouze zamýšlený Klientský kód dostat.Určit jak přístupné vaše typy a jejich členové jsou kódu klienta pomocí modifikátory přístupu veřejné, chráněné, vnitřní, protected internal, a soukromé.Usnadnění výchozí je private.Další informace naleznete v tématu Modifikátory přístupu (Příručka programování C#).

ms173109.collapse_all(cs-cz,VS.110).gifDědičnost

Třídy (ale není struktur) podporují koncept dědičnosti.Třída, která pochází z jiné třídy ( základní třídy) automaticky obsahuje všechny veřejné, protected a internal členy základní třídy s výjimkou jeho konstruktory a destruktory.Další informace naleznete v tématu Dědičnost (Příručka programování C#) a Polymorfismus (Příručka programování C#).

Třídy mohou být deklarován jako abstraktní, což znamená, že jeden nebo více způsobů jejich implementaci žádné.Přestože abstraktní třídy nelze vytvořit instanci přímo, mohou sloužit jako základní třídy pro ostatní třídy, které poskytují chybějící implementace.Třídy také deklarovat jako uzavřených zabránit dědění je z jiných tříd.Další informace naleznete v tématu Abstraktní a uzavřených tříd a členů tříd (Příručka programování C#).

ms173109.collapse_all(cs-cz,VS.110).gifRozhraní

Třídy a struktur může dědit více rozhraní.Zdědit znamená rozhraní, který typ implementuje všechny metody definované v rozhraní.Další informace naleznete v tématu Rozhraní (Příručka programování C#).

ms173109.collapse_all(cs-cz,VS.110).gifObecné typy

Třídy a struktur lze definovat jeden nebo více parametrů typu.Klientský kód dodávky typ při vytváření instance typu.Například List<T> třídy v System.Collections.Generic s jedním typem parametru je definován obor názvů.Klientský kód vytvoří instanci List<string> nebo List<int> zadat typ, který bude uchovávat seznam.Další informace naleznete v tématu Generics (Příručka programování C#).

ms173109.collapse_all(cs-cz,VS.110).gifStatické typy

Třídy (ale není struktur) mohou být deklarovány jako statické.Statické třídy mohou obsahovat pouze statické členy a nelze vytvořit instanci s nové klíčové slovo.Jednu kopii třídy načten do paměti po načtení programu a jeho členy jsou přístupné pomocí názvu třídy.Třídy a struktur může obsahovat statické členy.Další informace naleznete v tématu Statické třídy a členy statických tříd (Příručka programování C#).

ms173109.collapse_all(cs-cz,VS.110).gifVnořené typy

Třídy nebo struct mohou být vnořené do jiné třídy nebo struct.Další informace naleznete v tématu Nested Types.

ms173109.collapse_all(cs-cz,VS.110).gifČástečné typy

V souboru samostatný kód můžete definovat část třída, struktura nebo metody v jednom souboru kód a jiné části.Další informace naleznete v tématu částečné třídy a metody.

ms173109.collapse_all(cs-cz,VS.110).gifInicializátory objektů

Můžete konkretizovat a Inicializace třídy nebo struct objektů a kolekcí, objektů, bez explicitní volání konstruktoru své.Další informace naleznete v tématu Objekt a kolekce Inicializátory (Příručka programování C#).

ms173109.collapse_all(cs-cz,VS.110).gifAnonymní typy

V situacích, kdy není vhodné nebo nezbytné k vytvoření pojmenované třídy například jsou při vyplnění seznamu s daty struktur, že nemáte přetrvávají nebo předat jiné metody, použít anonymní typy.Další informace naleznete v tématu Anonymní typy (Příručka programování C#).

ms173109.collapse_all(cs-cz,VS.110).gifRozšíření metody

Můžete "rozšířit" třída bez vytvoření vytvořením samostatného typu lze volat metody, jejichž, jako by patřilo původní typ odvozené třídy.Další informace naleznete v tématu Rozšíření metody (Příručka programování C#).

ms173109.collapse_all(cs-cz,VS.110).gifImplicitně zadali lokální proměnné

V rámci metody třídy nebo struct můžete použít implicitní zadáte pokyn kompilátoru k určení správného typu v čase kompilace.Další informace naleznete v tématu Implicitně zadali místní proměnné (C# programování Guide).

Specifikace jazyka C#

Další informace naleznete v tématu Specifikace jazyka C#. Specifikace jazyka je úplným a rozhodujícím zdrojem pro syntaxi a použití jazyka C#.

Viz také

Koncepty

Příručka programování C#