C# 2.0: Statické triedy

Publikoval Michal Kočí dňa 20.9.2004 o 23:24 v kategórii .Net

Ak zvyknete vytvárať a používať triedy, ktoré obsahujú iba statické metódy, potom je táto nová črta jazyka C# 2.0 určená práve pre Vás. Pri programovaní takejto triedy v C# 1.0 sa trieda zvykla označovať ako sealed, teda príznakom, že z nej nie je možné dediť a tiež sa v nej uvádzal jeden privátny bezparametrový konštruktor - aby sa z nej nemohli vytvárať inštancie.

Ak ste teda chceli naprogramovať triedu, ktorá mala jednu statickú metódu HelloWorldMessage, ktorá vracala reťazec "Hello World!", potom ste vytvorili niečo takéto:

public sealed class OldStaticClass
{
    private OldStaticClass() { } 
    public static string HelloWorldMessage()
    {
        return "Hello World!";
    }
}

Riešenie je to vcelku šikovné až na to, že sa občas môžete pomýliť a v triede vytvoriť aj nestatickú metódu. Ak však chcete mať v triede iba statické metódy, potom je pre Vás vhodnejší nový typ triedy - statická trieda. Táto je implicitne sealed, takisto v nej nemôžete mať verejný konštruktor - môžete v nej však mať statický konštruktor (static constructor). Táto trieda môže obsahovať iba statické členy a metódy, pokus o vytvorenie nestatického člena či metódy skončí chybou pri kompilácii. Vyššie uvedenú triedu by ste mohli v C# 2.0 s použitím statickej triedy vytvoriť nasledovne:

public static class NewStaticClass
{
    public static string HelloWorldMessage()
    {
        return "Hello World!";
    }
}

A prikladám ešte dôkaz, že statická trieda môže obsahovať statický konštruktor:

public static class NewStaticClassWithStaticConstructor
{
    private static string hwMessage;
    static NewStaticClassWithStaticConstructor()
    {
        hwMessage = "Hello World!";
    }
    public static string HelloWorldMessage()
    {
        return hwMessage;
    }
}

Nejedná sa o žiadnu revolučnú vec, ale je pekné, že za Vás kompiler ošetrí, že zo statickej triedy rozhodne nespravíte žiadnu inštanciu.

Mohlo by ťa tiež zaujímať

Páčil sa ti príspevok?

Zdieľaj príspevok alebo si ho odlož na neskôr

Sleduj ma

Ak nechceš premeškať príspevky ako je tento, sleduj ma na Twitteri, alebo ak máš RSS čítačku, môžeš sledovať môj RSS kanál.

Komentáre

K tomuto článku nie su pridané žiadne komentáre.

Pridať komentár

Máš niečo zaujímavé povedať k článku? Pridaj to k článku ako komentár. Spam, reklamu alebo inak nerelevantné komentáre okamžite mažem.