C Sharp

z Wikipédie, slobodnej encyklopédie
Prejsť na: navigácia, hľadanie
Icon falscher Titel.svg Názov tohto článku je nesprávny z dôvodu technických obmedzení. Správny názov je C#
C#
Druh objektový
Dátum vzniku 2001 (posledná revízia Apríl 12, 2010)
Použitie všeobecné
Typová kontrola silná
Tvorca Microsoft
Implementácie .NET Framework, Mono
Dialekty 1.0, 1.5, 2.0 (ECMA), 3.0, 3.5, 4.0
Používané prípony .cs

C# (v angličtine c sharp - vysl. sí šarp) je objektovo-orientovaný programovací jazyk vyvinutý spoločnosťou Microsoft ako časť ich iniciatívy .NET. Microsoft si za základ pre nový jazyk C# zobral C++ a jazyk Java. C# bolo navrhované s úmyslom vyvážiť silu jazyka C++ a tú spojiť s možnosťou rýchleho programovania "rapid application development", ktoré ponúkali jazyky ako napríklad Visual Basic, Delphi.

Tento článok popisuje jazyk tak, ako je definovaný v štandardoch ISO a ECMA, pričom nepopisuje detaily implementácie firmou Microsoft. Pre popis implementácie jazyka firmou Microsoft si pozrite heslo Microsoft Visual C#.

Ciele pri tvorbe jazyka[upraviť | upraviť zdroj]

V štandarde ECMA boli kladené nasledovné ciele pri tvorbe jazyka C#:

  • C# bol vytváraný tak, aby bol jednoduchým, moderným, objektovo orientovaným jazykom pre všeobecné použitie.
  • Jazyk a jeho implementácie by mali poskytovať podporu pre nasledovné princípy softvérového inžinierstva ako silná typová kontrola, kontrola ohraničenia polí, detekciu pokusov na využitie neinicializovaných premenných a automatickú správu pamäte. Dôležitými vlastnosťami je tiež robustnosť, odolnosť a produktivita.
  • Jazyk je tvorený so zreteľom na vývoj softvérových komponentov, ktoré sú vhodné pre nasadenie v distribuovaných prostrediach.
  • Prenositeľnosť zdrojového kódu je mimoriadne dôležitá, rovnako ako aj prenositeľnosť znalostí programátorov so skúsenosťami s jazykmi C a C++.
  • Lokalizácia a internacionalizácia je mimoriadne dôležitá.
  • C# je jazyk zameraný na tvorbu aplikácií pre hostované, ako aj embedded systémy s ohľadom na veľkú škálovateľnosť od veľmi veľkých systémov používajúcich sofistikované operačné systémy po veľmi malé zariadenia pre špecializované úlohy.
  • Aj keď je jazyk C# plánovaný na ekonomické využívanie pamäte a procesorového času, nie je kompletne zameraný na výkonnosť a veľkosť výsledného binárneho kódu ako jazyky C alebo assembler.

História architektúry[upraviť | upraviť zdroj]

Tvorca princípov a hlavný architekt jazyka C# je Anders Hejlsberg. Jeho predchádzajúce skúsenosti s programovacími jazykmi a dizajnom frameworkov (Visual J++, Borland Delphi, Turbo Pascal) sú ľahko rozpoznateľné v syntaxi jazyka, rovnako ako aj v CLR (Common Language Runtime). Jeho analýza nedostatkov súčasných hlavných programovacích jazykov ako napríklad C++, Java, Delphi a Smalltalk, ktoré prezentoval vo svojich technických príspevkoch a rozhovoroch stáli pri zrode základov CLR a ktoré neskoršie ovplyvnili aj dizajn samotného jazyka C#. Niektoré korene a princípy samozrejme pochádzajú aj z iných programovacích jazykov.

Vlastnosti jazyka[upraviť | upraviť zdroj]

C# ako programovací jazyk v niektorých ohľadoch priamo odráža vlastnosti vrstvy CLI (Common Language Infrastructure), ktorá leží pod ním. Tento jazyk bol priamo navrhnutý tak, aby umožňoval využitie všetkých vlastností, ktoré poskytuje CLI, na rozdiel od jazykov, ktoré majú vlastnú sytax a využívajú len podmnožinu vlastností CLI (ako napríklad Visual Basic). Väčšina typov zavedených v jazyku C# priamo korešponduje s hodnotovými typmi implementovanými v CLI frameworku, špecifikácia jazyka C# však neurčuje podmienky, ktorými sa má generovanať kód z kompilátora. To znamená, že kompilátor jazyka C# nemusí mať za cieľovú podpornú platformu priamo CLI, respektíve vôbec nemusí generovať medziprekladový jazyk MSIL (Microsoft Intermediate Language), ani žiaden iný formát. Teoreticky je možné vytvoriť kompilátor jazyka C#, ktorý bude prekladať priamo do strojového kódu ako tradičné kompilátory jazyka C++, Fortran a podobne.

Pri porovnaní s jazykmi C a C++ došlo k rôznym obmedzeniam a rozšíreniam, z ktorých sú najvýraznejšie tieto:

  • Neexistujú globálne premenné. Všetky metódy a atribúty musia patriť niektorej triede, podobne ako v iných objektovo-orientovaných jazykoch.
  • Na rozdiel od C a C++ sa názvy premenných nesmú v uzatváracích blokoch opakovať, čo vedie k zlepšeniu čitateľnosti kódu a zamedzuje nejednoznačnostiam a zmiatnutiu pri čítaní zdrojového kódu.
  • Namiesto globálnych funkcií ako napríklad printf() v jazyku C musia byť všetky metódy dekladované s príslušnosťou k triede. Triedy sú v drvivej väčšine organizované do menných priestorov (namespace)

Ukážky z kódu[upraviť | upraviť zdroj]

Poznámky[upraviť | upraviť zdroj]

C# používa dvojitú lomku (//) na označenie komentáru.

public class Ahoj
{
    // komentár
    public static void Svet(int firstParam) {}  //Iný komentár
}

Rozdiely oproti C++[upraviť | upraviť zdroj]

  • Automatické uvoľnenie pamäte pri dátových typoch
  • Trieda sa dá odvodiť len od jednej triedy, ostatné sa dajú len implementovať ako rozhrania
  • Vlastnosti sa dajú definovať automaticky ako v príklade
...
        public long ValidValue
        {
            get
            {
                return nacitajHodnotuDynamicky();
            }
            set
            {
                if(value>0 && value<50)
                {
                     nastavHodnotu(value);
                }
            }
        }
...
 
obj.ValidValue = 5;
 
...