C#, vyslovované anglicky jako C Sharp, což znamená doslova notu CIS v hudbě, je vysokoúrovňový objektově orientovaný programovací jazyk, který byl vyvinut firmou Microsoft současně s platformou .NET Framework. Později byl jazyk schválený standardizačními komisemi ECMA a ISO. Jazyk C# vychází z jazyků C++ a Javy, je tedy nepřímým potomkem jazyku C, ze kterého v mnohém čerpá jeho syntaxe.

C# je možné uplatnit při tvorbě:

  • databázových programů
  • webových aplikací
  • desktopových formulářových aplikací
  • softwaru pro mobilní zařízení

Cíle jazyka

Na základě standardu ECMA je současný design C# definovaný následujícím způsobem:

  • Jedná se o jednoduchý, moderní, mnohoúčelový a objektově orientovaný programovací jazyk.
  • Jazyk včetně jeho implementací si dává za cíl poskytnout podporu pro principy softwarového inženýrství, mezi které patří například hlídání hranic polí, detekce použití neinicializovaných proměnných nebo automatický garbage collector.
  • Zásadní jsou mimo jiné vlastnosti jako je robustnost, trvanlivost a programátorská produktivita.
  • Jazyk se hodí pro vývoj softwarových komponent, které jsou distribuovány napříč různými prostředími.
  • Podstatná je přenositelnost zdrojového kódu, především pro programátory, kteří pracují také s C a C++.
  • Zásadní je rovněž mezinárodní podpora.
  • C# je designován tak, aby byl vhodný pro psaní aplikací pro zařízení se sofistikovanými systémy i pro zařízení s omezenými možnostmi.

Přestože procesorovým časem ani pamětí by neměly programy psané v C# plýtvat, nemohou se v těchto oblastech měřit s aplikacemi psanými v C nebo v jazyce symbolických adres.

Vlastnosti jazyka

  • V rámci C# není možné použít vícenásobnou dědičnost – proto každá třída může být potomkem maximálně jedné třídy. Toto rozhodnutí přijali vývojáři z toho důvodu, aby mohli předejít komplikacím a přílišné složitosti, která se s vícenásobnou dědičností pojí.
  • Třída může implementovat neomezený počet rozhraní.
  • Neexistují globální proměnné ani metody. Všechny metody i proměnné je nutné definovat v rámci tříd. Za náhradu globálních proměnných a metod lze považovat statické metody a proměnné veřejných tříd.
  • Objektově orientované programování často využívá vzor, kdy se k datovým atributům třídy dá přistupovat zvenčí pouze nepřímo z důvodu dodržení principu zapouzdření. Používají se k tomu dvě metody: metody get (accessor) a metody set (mutator). C# místo toho umožňuje nastavení tzv. property, která funguje navenek jako datový atribut, ale uvnitř obsahuje prostor pro definici jak metody get, tak metody set. Výhodou tohoto řešení je jednodušší práce s datovým atributem při současném zachování principu zapouzdření.
  • C# je obecně bezpečnější nežli C++. Implicitní konverze jsou předdefinované jen takové, které lze považovat za bezpečné. Jako příklad může posloužit rozšiřování celočíselných typů (například z 32bitového na 64bitový) nebo konverze z odvozeného typu na typ rodičovský. Implicitní konverze z celočíselných typů na boolean však neexistuje, stejně jako implicitní konverze mezi výčtovými a celočíselnými typy.
  • C# nevyžaduje ani neobsahuje dopřednou deklaraci – pořadí deklarace metod není podstatné.
  • Jazyk C# je case sensitive, tedy rozlišuje mezi velkými a malými písmeny. Identifikátory „hodnota“ a „Hodnota“ tak v tomto případě nejsou na rozdíl od VB .NET ekvivalentní.

Historie

Během vývoje frameworku .NET byly původně knihovny tříd psány pomocí Simple Managed C (SMC). V lednu 1999 vytvořil Anders Hejlsberg tým, aby sestavil nový jazyk, který se v té době nazýval Cool, což byla zkratka pojmenování „C-like Object Oriented Language“. Microsoft zvažoval, že tento název ponechá jako finální pojmenování jazyka, ale z důvodu ochranných známek od tohoto záměru upustil. Když byl .NET projekt veřejně oznámen na konferenci vývojářů v červenci 2000, jazyk byl pojmenován C# a knihovny tříd byly přeneseny do C#.

Hejlsberg je hlavním designerem C# a vedoucím architektem v Microsoftu. V rámci rozhovorů, které poskytl, prohlásil, že nedostatky většiny hlavních programovacích jazyků vedly ke vzniku Common Language Runtime, což následně vedlo ke vzniku C#.

James Gosling, který v roce 1994 vytvořil programovací jazyk Java a Bill Joy, spoluzakladatel Sun Microsystems, označili C# za imitaci Javy.

Od releasu C# 2.0 v listopadu 2005 se vývoj C# a Javy výrazně odchýlil, čímž se z nich staly dva velmi odlišné jazyky.