Movatterモバイル変換


[0]ホーム

URL:


Přeskočit na obsah
WikipedieWikipedie: Otevřená encyklopedie
Hledání

C Sharp

Z Wikipedie, otevřené encyklopedie
(přesměrováno zCsharp)
C#
Paradigmamultiparadigmatický
Vznik2000
AutorMicrosoft
VývojářMicrosoft
Hlavní implementaceVisual C#,.NET,Mono,DotGNU
DialektyCω, Spec#, Polyphonic C#
Ovlivněn jazykyC,C++,Eiffel,Haskell,Java,Object Pascal
Ovlivnil jazykyD,F#,Dart,Java,Vala
Název tohoto článku nemůže z technických důvodů obsahovat znak#. Správný název by měl býtC#.

C# (zpravidla vyslovováno anglicky jakoC Sharp, /siː šaːp/, což je anglické označenínotycis, tedy zvýšenéhoc) jevysokoúrovňovýobjektově orientovanýprogramovací jazyk vyvinutý firmouMicrosoft zároveň s platformou.NET Framework, později schválený standardizačními komisemiECMA (ECMA-334) a ISO (ISO/IEC 23270). Microsoft založil C# na jazycíchC++ a Java (a je tedy nepřímým potomkem jazykaC, ze kterého čerpá syntaxi).

C# lze využít k tvorbě databázových programů, webových aplikací a stránek,webových služeb, formulářových aplikací veWindows, softwaru pro mobilní zařízení (PDA a mobilní telefony) atd.

Cíle jazyka

[editovat |editovat zdroj]

Standard ECMA[1] definuje současný design C# takto:

  • C# je jednoduchý, moderní, mnohoúčelový a objektově orientovaný programovací jazyk.
  • Jazyk a jeho implementace poskytuje podporu pro principysoftwarového inženýrství, jakými jsou kupř. hlídání hranic polí, detekce použití neinicializovaných proměnných a automatickýgarbage collector. Důležité jsou také jeho vlastnosti jako robustnost, trvanlivost a programátorská produktivita.
  • Jazyk je vhodný pro vývoj softwarových komponent distribuovaných v různých prostředích.
  • Přenositelnost zdrojového kódu je velmi důležitá, obzvláště pro ty programátory, kteří jsou obeznámeni s C a C++.
  • Mezinárodní podpora je též velmi důležitá.
  • C# je navržen pro psaní aplikací jak pro zařízení se sofistikovanými operačními systémy, tak pro zařízení s omezenými možnostmi.
  • Přestože by programy psané v C# neměly plýtvat s přiděleným procesorovým časem a pamětí, jazyk nebyl navržen pro to, aby se mohly měřit s aplikacemi psanými v C nebojazyce symbolických adres.

Vlastnosti jazyka

[editovat |editovat zdroj]
  • V C# neexistuje vícenásobnádědičnost – to znamená, že každátřída může být potomkem pouze jedné třídy. Toto rozhodnutí bylo přijato, aby se předešlo komplikacím a přílišné složitosti, která je spojena s vícenásobnou dědičností. Třída ale může implementovat libovolný počet rozhraní.
  • Neexistují žádné globální proměnné a metody, všechny musí být deklarovány uvnitř tříd. Náhradou za globální proměnné a metody jsou statické metody a proměnné veřejných tříd.
  • V objektově orientovaném programování se z důvodu dodržení principuzapouzdření často používá vzor, kdy k datovým atributům třídy lze zvenčí přistupovat pouze nepřímo, a to pomocí dvou metod: metodyget (accessor) a metody set (mutator). V C# lze místo toho definovat tzv. vlastnosti (anglickyproperty), která zvenčí stále funguje jako datový atribut, ale uvnitř obsahuje prostor pro definici obou těchto metod. Výhodou je jednodušší práce s datovým atributem při zachování principu zapouzdření.
  • C# jetypově bezpečnější nežC++. Jediné předdefinované implicitní konverze (implicitnípřetypování) jsou takové, které jsou považovány za bezpečné. Příkladem budiž rozšiřování celočíselných typů (např. z 32bitovéhoInteger na 64bitový) nebo konverze z odvozeného typu na typ rodičovský. Neexistuje však implicitní konverze z celočíselných typů naboolean ani implicitní konverze mezivýčtovými a celočíselnými typy.
  • C# nepotřebuje a ani neobsahuje dopřednou deklaraci – pořadí deklarace metod není důležité.
  • Jazyk C# jecase sensitive – rozlišuje mezi velkými a malými písmeny. Identifikátory „hodnota“ a „Hodnota“ tedy nejsou, na rozdíl odVB .NET, ekvivalentní.

CTS

[editovat |editovat zdroj]

Společný typový systém (anglickyCommon Type System; CTS) je unifikovanýtypový systém používaný všemi jazyky pod .NET Framework, tedy i jazykem C# (dále napříkladVB.NET). Všechny typy (datové typy), včetněprimitivních datových typů jako je Integer, jsou potomky třídy System.Object a dědí od ní i všechny její metody jako například ToString().

Typy v CTS se dělí do dvou základních skupin a to:

  • Hodnotové
  • Referenční

Hodnotové datové typy

[editovat |editovat zdroj]

Všechny hodnotové datové typy jsou na rozdíl od odkazových typů alokované nazásobníku a to z výkonnostních důvodů.Hodnotové datové typy můžeme rozdělit do tří částí

  • Primitivní datové typy – Sem patří celočíselné primitivní datové typy (Byte, Integer, Char…) a reálné primitivní datové typy reprezentující reálná čísla (float, double, decimal)
  • Struktury – Jedná se o uživatelsky definované datové typy. Na první pohled připomínají třídy, ale nemohou dědit ani být děděny.
  • Výčtové typy – Pojetí výčtů je například oproti Javě značně zjednodušené. V C# je výčet pouze množina předem definovaných hodnot (např. VýčetDnyVTydnu s hodnotami pondělí, úterý…) bez možnosti definovat si uvnitř výčtu metody nebo atributy, indexery nebo implementovat rozhraní.

Referenční datové typy

[editovat |editovat zdroj]

Referenční typy neuchovávají na rozdíl od typů hodnotových pouze hodnotu samotnou, ale odkaz (referenci) na místo v paměti, kde je požadovanáinstance uložena. Všechny odkazové typy jsou alokovány nahaldě.

Používané platformy

[editovat |editovat zdroj]

Jazyk C# je navržen tak, aby co nejvíce zohledňoval strukturuCommon Language Infrastructure (CLI), se kterou je používán. Většina základních typů v C# přímo odpovídá základním typům v platformě CLI. Návrh jazyka ale nevyžaduje, abypřekladač generovalCommon Intermediate Language (CIL) nebo jiný konkrétní formát. Teoreticky je možné, aby překladač vytvářelstrojový kód podobný běžným překladačům jazyka C++ a jiných, ale v praxi všechny překladače jazyka C# generují CIL.

Historie a verze jazyka

[editovat |editovat zdroj]
Verze jazyka[2]
VersionSpecifikace jazykaDatum.NETVisual Studio
Ecma[3]ISO/IECMicrosoftUvolněníUkončení podpory
C# 1.0prosinec 2001 ECMA-334:2001

prosinec 2002 ECMA-334:2002

červen 2005 ECMA-334:2005

duben 2003 ISO/IEC 23270:2003leden 2002leden 2002.NET Framework 1.0Visual Studio .NET 2002
C# 1.1

C# 1.2

říjen 2003duben 2003Visual Studio .NET 2003
C# 2.0[4]červen 2006 ECMA-334:2006září 2006 ISO/IEC 23270:2006září 2005[pozn. 1]listopad 2005Visual Studio 2005

Visual Studio 2008

C# 3.0[5]srpen 2007listopad 2007.NET Framework 2.0 (s výjimkou LINQ)[6]

.NET Framework 3.0 (s výjimkou LINQ)[7]

.NET Framework 3.5

Visual Studio 2008
C# 4.0[8]duben 2010duben 2010.NET Framework 4Visual Studio 2010
C# 5.0[9]prosinec 2017 ECMA-334:2017prosinec 2018 ISO/IEC 23270:2018červen 2013srpen 2012Visual Studio 2012

Visual Studio 2013

C# 6.0[10]červen 2022 ECMA-334:2022návrh specifikacevlastnostičervenec 2015
Visual Studio 2015
C# 7.0[11][12]návrh specifikacevlastnostibřezen 2017Visual Studio 2017 verze 15.0
C# 7.1[13]vlastnostiArchivováno 11. 3. 2021 naWayback Machine.srpen 2017
  • .NET Core 2.0
Visual Studio 2017 verze 15.3[14]
C# 7.2[15]vlastnostilistopad 2017Visual Studio 2017 verze 15.5[16]
C# 7.3[17]vlastnostiArchivováno 7. 3. 2021 naWayback Machine.květen 2018
Visual Studio 2017 verze 15.7[16]
C# 8.0[18]vlastnostiArchivováno 7. 3. 2021 naWayback Machine.září 2019.NET Core 3.0Visual Studio 2019 version 16.3[19]
prosinec 2019.NET Core 3.1Visual Studio 2019 verze 16.4[20]
C# 9.0[21]vlastnostilistopad 2020
  • .NET 5.0
Visual Studio 2019 verze 16.8[22]
C# 10.0[23]vlastnostilistopad 2021
  • .NET 6.0
  • .NET 6.0.1
Visual Studio 2022 verze 17.0[24]
10. říjen 202312. listopad 2024[25].NET 6.0.23
C# 11.0[26]vlastnostilistopad 2022.NET 7.0Visual Studio 2022 verze 17.4[27]
10. říjen 202314. květen 2024[25].NET 7.0.12
C# 12.0[28]vlastnostiříjen 2023[25].NET 8.0.0 (RC) 2[29]Visual Studio 2022 verze 17.8 (Preview)[30]

C Sharp 1.0

[editovat |editovat zdroj]

První verze vydaná v roce 2002 společně s .NET Frameworkem 1.0 obsahovala základní podporu objektového programování, ve které vycházela z jazyka C++ a zkušeností s jejich aktualizací v jazyce Java.

C Sharp 1.1

[editovat |editovat zdroj]
PahýlTato část článku je příliš stručná nebopostrádá důležité informace. Pomozte Wikipedii tím, že ji vhodněrozšíříte.

C Sharp 1.2

[editovat |editovat zdroj]

Verze 1.2 byla vydána společně s Visual Studio .NET 2003. Obsahovala několik malých vylepšení jazyka. K této verzi nově patří i úprava smyčky foreach, která nově na svém konci volá Dispose pokud iterátor implementujeIDisposable.

C Sharp 2.0

[editovat |editovat zdroj]

Na další verzi se čekalo až do konce roku 2005. Mezi její nové vlastnosti patří:

  • nativní podporagenerik vycházející z podpory na úrovni CLI
  • částečné a statické třídy
  • iterátory
  • anonymní metody pro pohodlnější užívání delegátů (odkazů na metody)
  • nullovatelné hodnotové typy a operátor koalescence

Generika, neboliparametrizované typy, neboliparametrickýpolymorfizmus, je podporována od C# 2.0. Na rozdíl od C++ šablon jsou .NET parametrizované typy instanciovány (instance vytvářeny) za běhu, a ne při kompilaci. Proto mohou být použity i v jiném jazyce, než byly napsány. Podporují některé funkce, jež nejsou podporovány přímo v C++ šablonách, např. typové omezení na generických parametrech v rozhraní. Na druhou stranu C# nepodporujenetypové generické parametry. Na rozdíl od generik v jazyce Java .NET generika používají zhmotnění parametrizovaných objektů první třídy v CLI Virtual Machine, které umožňuje optimalizace a zachování druhu informací.

Částečné třídy

[editovat |editovat zdroj]

Částečné třídy (anglickypartial) umožňují vytvoření třídy, která má být rozdělena mezi několik souborů, přičemž každý soubor obsahuje jeden nebo více členů třídy. Toto se používá hlavně v případě, že některé části třídy jsou generovány automaticky, zatímco jiné jsou psané programátorem. Například tuto funkci používáVisual Studio progenerování kódu při vytváření uživatelského rozhraní v návrháři.

file1.cs:

publicpartialclassMyClass{publicvoidMyMethod1(){// Kód psaný programátorem}}

file2.cs:

publicpartialclassMyClass{publicvoidMyMethod2(){// Automaticky generovaný kód}}

Statické třídy

[editovat |editovat zdroj]

Statické třídy jsou třídy, které nemohou být instanciovány, nemůže se z nich dědit a mohou mít pouze statické členy. Jejich účel je obdobný jako moduly v mnohaprocedurálních jazycích.

Nová forma iterátoru poskytující funkčnost generátoru

[editovat |editovat zdroj]

Nová forma iterátoru, poskytující funkčnost (implementaci) generátorukoprogramu, používá konstrukciyield return podobnou konstrukciyield v jazycePython.

// Metoda, která vezme iterovatelný vstup (například pole)// a vrátí všechna sudá čísla.publicstaticIEnumerable<int>GetEven(IEnumerable<int>numbers){foreach(intiinnumbers){if(i%2==0)yieldreturni;}}

Anonymní delegáty

[editovat |editovat zdroj]

Jako předchůdcelambda funkcí představených v C# 3.0 byly do C# 2.0 přidány anonymní delegáti. Zavádějí funkčnostuzávěrů do C#.[31] Kód uvnitř těla anonymního delegátu má plný přístup k lokálním proměnným, parametrům metody a instancím tříd, kroměout a ref parametrů. Například:

intSumOfArrayElements(int[]array){intsum=0;Array.ForEach(array,delegate(intx){sum+=x;});returnsum;}

Možnost nastavení jiné přístupnosti pro čtení a zapisování vlastností třídy

[editovat |editovat zdroj]

Například:

stringstatus=string.Empty;publicstringStatus{get{returnstatus;}// kdokoliv může číst vlastnost,protectedset{status=value;}// ale pouze potomci ji mohou zapisovat}

Nullovatelné typy

[editovat |editovat zdroj]

Nullovatelné typy (označené otazníkem, např. int? i = null) přidávají hodnotunull do množiny povolených hodnot pro jakýkoliv datový typ.

Operátor koalescence

[editovat |editovat zdroj]

Operátor ?? je nazývánoperátorem koalescence a je používán pro definování implicitní hodnoty nullovatelných typů a stejně tak i referenčních typů. Operátor vrací levý operand, pokud není jeho hodnota rovnanull. V opačném případě vrací pravý operand.[32]

objectnullObj=null;objectobj=newObject();returnnullObj??obj;// vrací obj

Primárně se tento operátor používá k přiřazení hodnoty nullovatelného typu do nenullovatelné proměnné:

int?i=null;intj=i??0;// Jestliže i není null, nastav j na i. Jinak (pokud i je null), nastav j na 0.

C Sharp 3.0

[editovat |editovat zdroj]

Vyšel na konci roku 2007 společně s .NET Frameworkem 3.5 a Visual Studiem 2008. Obsahuje poměrně revoluční změny, které však nevyžadují změnu podkladového IL, takže aplikace v něm psané půjdou spouštět i na počítačích vybavených toliko druhým Frameworkem, ponesou-li si s sebou patřičné knihovny.

Language Integrated Query, tedy integrovaný dotazovací jazyk přináší nový způsob pro dotazování nad jakýmikoliv daty, usnadňuje jejich tvorbu, třídění a vyhledávání v nich. LINQ to Objects umožňuje dotazování nad normálními objekty (respektive jejich kolekcemi), LINQ to SQL přináší nový způsob pro práci s databázemi a LINQ to XML umožňuje pracovat s XML soubory.Následující příklad ukazuje dotaz LINQ který nám ze zdrojového pole vrátí druhé mocniny všech lichých čísel a výsledky seřadí sestupně. Všimněte si podobnosti se syntaxíSQL.

int[]myArray={1,5,2,10,7};IEnumerable<int>query=fromxinmyArray//Požadujeme všechny elementy z pole myArray,wherex%2==1//kde zbytek po celočíselném dělení (modulo) je roven 1orderbyxdescending//výsledek požadujeme seřazen sestupněselectx*x;//a vrácená čísla umocníme na druhou// Výsledek : 49, 25, 1

Lambda výrazy

[editovat |editovat zdroj]

Pomocílambda výrazů, jež si berou inspiraci z funkcionálního programování, je možné tvořitanonymní metody, které obsahují jeden výraz nebo několik příkazů a použít je v situaci, kdy je očekávána instance delegáta.Pro potřebu lambda výrazů byl do C# 3.0 uveden nový operátor=>. Ten se nazývá „přechází v“.

V C# 2.0 bychom vyhledávání prvků v seznamu pomocíanonymní metody napsali například takto:

List<int>seznamCisel=newList<int>{1,2,3,4,5};List<int>vysledek=seznamCisel.FindAll(delegate(inti){returni<4;});

A ta samá funkčnost napsaná pomocílambda výrazu v C# 3.0:

List<int>seznamCisel=newList<int>{1,2,3,4,5};List<int>vysledek=seznamCisel.FindAll(i=>i<4);

Všimněte si, že se neuvádějí typy argumentů (tedy žei je Integer), ale podobně jako u klíčového slovavar je typ argumentu odvozen v doběkompilace (tedy ne za běhu, takže je stále dodrženatypová bezpečnost) z kontextu.

Obecně tedy lambda výraz zapisujeme jako(vstupní argumenty) => výraz.

Inicializátory objektů a kolekcí

[editovat |editovat zdroj]
Zakaznikz=newZakaznik();z.Jmeno="Petr";

Můžeme zkráceně zapsat jako:

Zakaznikz=newZakaznik{Jmeno="Petr"};

Zápis inicializace kolekcí pak můžeme také zkrátit z původního

MujSeznamseznam=newMujSeznam();seznam.Add(1);seznam.Add(2);

na zkrácené:

MujSeznamseznam=newMujSeznam{1,2};

Za předpokladu, že naše třída MujSeznam implementuje rozhraníSystem.Collections.IEnumerable a má veřejnou metoduAdd.

Rozšiřující metody

[editovat |editovat zdroj]

Pomocí rozšiřujících metod můžeme vyvolat dojem, že třída má metody, které jsou ve skutečnosti zapsány mimo tuto třídu. Rozšiřující metody jsou ve skutečnosti statické metody, které se dají volat jako metody instance. Následující příkaz ukazuje, jak můžeme rozšířit třídu string o novou metodu, kterou deklarujeme v oddělené třídě StringExtensions. Na jakékoliv instanci třídystring poté můžeme volat naši novou metodu.

publicstaticclassStringExtensions{publicstaticstringLeft(thisstrings,intn){returns.Substring(0,n);}}
strings="foo";s.Left(3);// Stejné jako StringExtensions.Left(s, 3);

Klíčové slovo var

[editovat |editovat zdroj]
Dictionary<string,List<float>>x=newDictionary<string,List<float>>();

Můžeme nyní zapsat jako

varx=newDictionary<string,List<float>>();

Typ proměnnéx bude určen podle pravé strany výrazu a to již v době překladu. To není jen zkrácení zápisu pro inicializaci proměnných, ale jde o formu zápisu, která se používá při deklaraci proměnných anonymních typů.

Výrazové stromy

[editovat |editovat zdroj]

Výrazové stromy (anglickyExpression Trees) umožňují pracovat s kódem nejen jako se spustitelnými příkazy, ale také jako s daty. Můžeme tedy v aplikaci vytvořit stromovou strukturu reprezentující kód. U té pak můžeme sledovat její veřejné vlastnosti a na základě toho ji analyzovat, zjistit všechny potřebné informace, popřípadě ji optimalizovat. V případě potřeby ji můžeme dálezkompilovat do spustitelné podoby pomocí metodycompile.

Anonymní třídy

[editovat |editovat zdroj]

Anonymní třídy umožňující např. rychlé vytvoření objektů přenášejících informace vyžádané z databáze přesLINQ.

C Sharp 4.0

[editovat |editovat zdroj]

Tato verze vyšla v dubnu 2010. Nová verze se zaměřuje hlavně na spolupráci s dynamickými aspekty programování a frameworky, jako napříkladmodul runtime dynamického jazyka (anglickyDynamic Language Runtime;DLR) a objektový model komponent (Component Object Model;COM). Mezi další novinky patří:

C Sharp 5.0

[editovat |editovat zdroj]

Verze 5.0 byla uvedena v srpnu 2012 společně s .NET Framework 4.5 a vývojovým prostředímVisual Studio 2012 (případněMono 3.0. Novinkou v této verzi je podpora asynchronního programování přidáním klíčových slovasync a await. Další novinkou jsouCaller Information atributy pro jednodušší zjištění informací o volající metodě.[33]

Změny chování

[editovat |editovat zdroj]

Také došlo k několika zpětně nekompatibilním změnám (breaking changes). Poměrně výrazná změna nastává při zachycení iterační proměnné cykluforeach v anonymních metodách. Před verzí C# 5.0 byla iterační proměnná umístěna vně cyklu a byla použita pro všechny iterace. Od verze C# 5.0 je iterační proměnná uvnitř cyklu a je v každé iteraci čerstvou proměnnou.

Další změnou je změna pořadí vyhodnocení parametrů metod při použití pojmenovaných parametrů. V předchozí verzi jazyka byly nejprve vyhodnoceny pojmenované parametry a teprve poté ostatní parametry. Od verze C# 5.0 jsou všechny parametry vyhodnocovány zleva doprava v pořadí v jakém jsou uvedeny.

C Sharp 6.0

[editovat |editovat zdroj]

Byl uvolněn spolu s Visual Studio 2015 a doplněn o menší funkce pro zvýšení produktivity programování v jazyce C#:[34]

  • Statické importy
  • Filtry výjimek
  • Automatické inicializátory vlastností
  • Výrazové členy
  • Propagátor nulových hodnot
  • Interpolace řetězců
  • operátor nameof

a další nové funkce, jako:

  • Inicializátory indexů
  • Await v blocích catch/finally
  • Výchozí hodnoty pro vlastnosti určené pouze pro getter

C Sharp 7.0

[editovat |editovat zdroj]

Byl uvolněn spolu s Visual Studio 2017. Nově se objevilo:[34]

  • Proměnné out
  • Tuply a dekonstrukce
  • Porovnávání vzorů
  • Lokální funkce
  • Členové s rozšířeným výrazem
  • ref návratová hodnota
  • ref lokální proměnná
  • discards
  • binární literály a oddělovače číslic
  • throw výrazy

C Sharp 7.1

[editovat |editovat zdroj]

Doplnil:[34]

  • async Main metoda
  • výchozí doslovné výrazy
  • Odvozené názvy prvků tuple
  • Porovnávání vzorů u parametrů obecných typů

C Sharp 7.2

[editovat |editovat zdroj]
PahýlTato část článku je příliš stručná nebopostrádá důležité informace. Pomozte Wikipedii tím, že ji vhodněrozšíříte.

C Sharp 7.3

[editovat |editovat zdroj]
PahýlTato část článku je příliš stručná nebopostrádá důležité informace. Pomozte Wikipedii tím, že ji vhodněrozšíříte.

C Sharp 8.0

[editovat |editovat zdroj]
PahýlTato část článku je příliš stručná nebopostrádá důležité informace. Pomozte Wikipedii tím, že ji vhodněrozšíříte.

Nové a vylepšené funkce:[34]

  • zaveden typ záznam (record)
  • zavedeny výhradně inicializačnísettery
  • zavedeny příkazy nejvyšší úrovně
  • vylepšeno porovnávání vzorů
  • vylepšeny jsou výkon a interoperabilita
    • zavedena podpora nativní velikosti celých čísel
    • zavedena deklaraceukazatele funkcí
    • zavedena možnost potlačit vystavování příznakulocalsinit
  • funkce pro psaní efektivnějšího kódu
    • zavedeny cílově typované výrazynew
    • zavedeny statické anonymní funkce
    • zaveden cílově typovaný podmíněný výraz
    • zaveden kovariantní návratový typ
    • podporaGetEnumerator pro smyčkyforeach
    • zavedenlambda parametr vyřazování (discard)
    • zavedeny atributy na lokálních funkcích
  • podpora generátorů kódu
    • zavedeny inicializátory modulů
    • zavedeny nové vlastnosti částečných (partial) metod

Doplňuje:[34]

  • struktury záznamů
  • vylepšení typů struktur
  • interpolované obsluhy řetězců
  • globálníusingdirektivy
  • deklaracejmenného prostoru s rozsahem souboru
  • rozšířené vzory vlastností
  • vylepšenílambda výrazů
  • povolení konstantních interpolovaných řetězců
  • typy záznamů mohou zapečetit funkci ToString()
  • vylepšené definitivní přiřazení
  • povoleno přiřazení i deklarace v jedné dekonstrukci
  • povolení atributuAsyncMethodBuilder u metod
  • atributCallerArgumentExpression
  • vylepšená pragma#line

C# 11 byl uvolněn v listopadu 2022 a přišel s NET 7.0 a vývojovým prostředím Visual Studio 2022 verze 17.4.

Přináší:[35][36]

Obecné atributy (generic attributes)

[editovat |editovat zdroj]

K dispozici od Visual Studia 2022 verze 17.1.

Vytvoření obecného atributu

publicclassGenericAttribute<T>:Attribute{}

a použití

[GenericAttribute<string>()]publicstringMethod()=>default;

Podpora generické matematiky (Generic math support)

[editovat |editovat zdroj]

K dispozici od Visual Studia 2022 verze 17.3. Není potřeba znát přesný datový typ.

Statické virtuální členy v rozhraních
[editovat |editovat zdroj]

.NET 7/C# 11 zavádí možnost mít v rozhraní přetížitelné operátory (static abstract astatic virtual ) a tím dále rozšiřuje podporu generické matematiky zavedené v .NET 6/C# 10.

Neznaménkový operátor posunu doprava>>> (unsigned shift operator)
[editovat |editovat zdroj]

Eliminuje se potřeba převádět celé číslo se znaménkem na typ bez znaménka, provést posun a výsledek převést zpět na typ se znaménkem.

Uvolnění operátorů posunu
[editovat |editovat zdroj]

Požadavek, aby druhý operand bylint neboimplicitně převoditelný naint jazyk C# 11 odstraňuje. Tato změna umožňuje na těchto místech používat typy, které implementují obecná matematická rozhraní.

Operátory kontrolychecked aunchecked definované uživatelem
[editovat |editovat zdroj]

Zavedení možnosti definovat kontrolovanéchecked a nekontrolovanéuncheckedaritmetické operátory, kdy překladač vygeneruje volání správné varianty na základě aktuálního kontextu.

Číselný (numerický)IntPtr aUIntPtr

[editovat |editovat zdroj]

K dispozici od Visual Studia 2022 verze 17.3. Jako je typint aliasem proSystem.Int32, jsou nyní typynint anuint aliasy proSystem.IntPtr aSystem.UIntPtr.[37]

Nové řádky v řetězcových interpolačních výrazech (string interpolation)

[editovat |editovat zdroj]

K dispozici od Visual Studia 2022 verze 17.1. Usnadnění čtení interpolovaného řetězce – textu uvnitř znaků{ a}, rozdělením textu na více řádků. Text může obsahovat například dotazy LINQ neboswitch. Interpolovaný řetězec je analyzován jako kód C#, včetně nových řádků.

Vzory seznamů (list patterns)

[editovat |editovat zdroj]

K dispozici od Visual Studia 2022 verze 17.1. Zavádí porovnávání pole nebo seznamu s posloupností vzorů.

int[]numbers={1,2,3};Console.WriteLine(numbersis[1,2,3]);// TrueConsole.WriteLine(numbersis[1,2,4]);// FalseConsole.WriteLine(numbersis[1,2,3,4]);// FalseConsole.WriteLine(numbersis[0or1,<=2,>=3]);// TrueConsole.WriteLine(numbersis[_,_,_]);// TrueConsole.WriteLine(numbersis[_,_]);// FalseConsole.WriteLine(numbersis[_,..]);// TrueConsole.WriteLine(numbersis[..]);// TrueConsole.WriteLine(numbersis[2,..]);// False

Vzor vyřazení_ (discard pattern) odpovídá libovolnému jednotlivému znaku. Vzor rozsahu.. (range pattern) reprezentuje libovolnou posloupnost (nula nebo více prvků).

Vylepšený převod skupiny metod na delegáta

[editovat |editovat zdroj]

K dispozici od Visual Studia 2022 verze 17.2. Předchozí verze standardu zakazovaly překladači opakovaně použít objekt delegáta vytvořenou pro převod skupiny metod. Nově se při převodu skupiny metod objekt delegáta vytvořený překladačem jazyka C# 11 ukládá do mezipaměti (cache). A používá se tento objekt delegáta. Konverze může, ale nemusí, použít existující instanci delegáta, která již odkazy obsahuje.

//  Příklad převodu skupiny metod:delegatestringD1(objecto);delegateobjectD2(strings);delegateobjectD3();delegatestringD4(objecto,paramsobject[]a);delegatestringD5(inti);classTest{staticstringF(objecto){returnnull;}staticvoidG(){D1d1=F;         // OkD2d2=F;         // OkD3d3=F;         // Chyba kompilace: Žádné přetížení pro 'F' neodpovídá delegátu 'D3'D4d4=F;         // Chyba kompilace: Žádné přetížení pro 'F' neodpovídá delegátu 'D4'D5d5=F;         // Chyba kompilace: Žádné přetížení pro 'Test.F(object)' neodpovídá delegátu 'D5'}}

Surové řetězcové literály (raw string literals)

[editovat |editovat zdroj]

K dispozici od Visual Studia 2022 verze 17.2. Jedná se o nový formát pro řetězcové literály. Literál surového řetězce začíná alespoň třemi znaky po sobě jdoucích dvojitých uvozovek ("""). Nové řádky následující za úvodní a před závěrečnou uvozovkou se do konečného obsahu nezapočítávají.

stringx="text";Console.WriteLine("Výstup:"+$$"""Příklad"{{x}}u".""" + "Konec");/*Výstup:Příklad  "textu".Konec*/

Více znaků$ označuje, kolika po sobě jdoucími závorkami interpolace začíná a končí.

Struktury auto-default (auto-default structs)

[editovat |editovat zdroj]

K dispozici od Visual Studia 2022 verze 17.3. Automatické výchozí nastavení struktur. Překladač jazyka C# 11 zajistí, že všechny položky struktury (typustruct) budou inicializovány na výchozí hodnotu v rámci provádění konstruktoru. Každá členská proměnná nebo automatická vlastnost, která není inicializována pomocí konstruktoru, je nově automaticky inicializována překladačem.

Testování shody vzoruSpan<char> aReadOnlySpan<char> na konstantním řetězci

[editovat |editovat zdroj]

K dispozici od Visual Studia 2022 verze 17.3. Podobě, jako při testování pomocí porovnávání vzorů (pattern match), jestli řetězec obsahuje danou konstantní hodnotu, je nyní možné použít testování vzorů s proměnnými, které jsouSpan<char> neboReadOnlySpan<char>.

Rozšířená podporanameof

[editovat |editovat zdroj]

K dispozici od Visual Studia 2022 verze 17.3. Operátornameof nově vyhodnocuje názvy parametrů a názvy parametrů typu v deklaraci atributu dané metody. Operátornameof je tak možné využít k zadání názvu parametru metody v atributu v deklaraci metody nebo parametru. Využití je například pro přidávání atributů pro analýzu nulovatelnosti.

Řetězcové literály UTF-8

[editovat |editovat zdroj]

Nově je možné u řetězcového literálu zadat příponuu8 pro určení kódování znakůUTF-8.

Požadovaní členové (required members)

[editovat |editovat zdroj]

Zaveden je modifikátorrequired, který je možné použít pro vlastnosti a členské proměnné a vynutit, aby je konstruktory a volání inicializovali. Překladač všechny požadované členy třídy inicializuje, má-li konstruktor atributSystem.Diagnostics.CodeAnalysis.SetsRequiredMembersAttribute.

Členské proměnnéref a proměnnéref scoped

[editovat |editovat zdroj]

Uvnitř strukturyref struct je možné deklarovat členské proměnnéref. U typů jakoSystem.Span<T> tak není třeba uvádět speciální atributy ani skryté vnitřní typy. K deklaraci ref je možné připojit modifikátor rozsahu viditelnosti a omezit tak rozsah, kde může být odkaz použit.

Lokální typy souborů (file-local types)

[editovat |editovat zdroj]

Verze C# 11 zavádífile, novýmodifikátoru přístupu, který omezuje viditelnost na zdrojový soubor, ve kterém je deklarován.

Varovná vlna 7 (Warning wave 7)

[editovat |editovat zdroj]

K dispozici od Visual Studia 2022 verze 17.2. Jedná se o varování (Warnings) a chyby (Errors) přidané v jazyce C# 11:[38]

  • CS8981 – název typu obsahuje pouze maléascii znaky Všechna nová klíčová slova přidaná pro jazyk C# budou obsahovat malá písmena ASCII. Toto upozornění zajistí, že žádný z vašich typů nebude v konfliktu s budoucími klíčovými slovy. Následující kód vytváří CS8981:
    publicclassnazevmalymipismeny{}
  • CS8826 – deklarace částečných metod se liší v signaturách
  • CS7023 – ve výrazuis neboas je použit statický typ
  • CS8073 – výsledkem výrazu je vždyfalse (nebotrue).
  • CS8848 – z důvodu priority zde nelze použít operátor 'from', pro ujasnění použijte závorky
  • použití nepřiřazené proměnné, členy musí být plně přiděleny (CS8880, CS8881, CS8882, CS8883, CS8884, CS8885, CS8886, CS8887)
  • CS8892 – byl nalezen synchronní vstupní bod 'method', metoda nebude použita jako vstupní bod
  • CS8897 – statické typy nelze použít jako parametry
  • CS8898 – statické typy nelze použít jako návratové typy

Zlepšení serializace System.Text.Json

[editovat |editovat zdroj]
Přizpůsobení kontraktu JSON
[editovat |editovat zdroj]

Možnost lépe kontrolovat serializaci a deserializaci typu.

Polymorfní serializace
[editovat |editovat zdroj]

Polymorfní serializace vlastností uživatelsky definované hierarchie typů (odvozených tříd).

Podpora povinných členů
[editovat |editovat zdroj]

Označení povinných vlastností, které musí být přítomny ve zdroji JSON, aby deserializace proběhla úspěšně.

PahýlTato část článku je příliš stručná nebopostrádá důležité informace. Pomozte Wikipedii tím, že ji vhodněrozšíříte.
Primární konstruktory
[editovat |editovat zdroj]

Primární konstruktory (primary constructors).

Výrazy pro kolekce
[editovat |editovat zdroj]

Výrazy pro kolekce (collection expressions).

Výchozí parametry lambda
[editovat |editovat zdroj]

Výchozí parametry lambda (default lambda parameters).

Nepovinné parametry ve výrazech lambda

[editovat |editovat zdroj]

Nepovinné parametry ve výrazech lambda (eptional parameters in lambda expressions).

Alias any type
[editovat |editovat zdroj]

Alias any type (alias libovolného typu).

Inline arrays
[editovat |editovat zdroj]

Inline arrays (Inline pole).

Interceptors
[editovat |editovat zdroj]

Interceptors (Interceptory).

Výběr verze cílového rámce

[editovat |editovat zdroj]

Jazyk C# 11 je podporován pouze ve verzi .NET 7 a novějších, C# 10 v .NET 6 a novějších, C# 9 v .NET 5 a novějších, C# 8.0 v .NET Core 3.x a novějších.[39]

Výchozí verze cílového rámce (.NET SDK), kterou na základě pravidel určí překladač jazyka C#[39][40][41][42]
.NET StandardCílový rámecVýchozí verze jazyka C#Roslyn kompilátorVisual Studio
NázevVerze
.NET Framework2.0 – 4.6C# 6.0Visual Studio 2015
.NET Framework4.7C# 7.0Visual Studio 2017 verze 15.0
.NET FrameworkC# 7.1Visual Studio 2017 verze 15.3
.NET FrameworkC# 7.2Visual Studio 2017 verze 15.5
1.0–1.2.NET Framework4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8C# 7.3Visual Studio 2017 verze 15.7
1.3–1.6.NET Framework4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8C# 7.3Visual Studio 2017
2.0.NET Framework4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8C# 7.3Visual Studio 2017
1.0–1.6.NET Core1.0.4C# 7.02.0Visual Studio 2017 RTM
2.1Visual Studio 2017 verze 15.1
2.2Visual Studio 2017 verze 15.2
1.1.4C# 7.12.3.2Visual Studio 2017 verze 15.3
2.4Visual Studio 2017 verze 15.4
1.0–1.6, 2.0.NET Core2.1.2C# 7.22.6.1Visual Studio 2017 verze 15.5
2.7Visual Studio 2017 verze 15.6
2.1.200C# 7.32.8.2Visual Studio 2017 verze 15.7
2.9Visual Studio 2017 verze 15.8
2.10Visual Studio 2017 verze 15.9
1.0–1.6, 2.0, 2.1.NET Core3.xC# 8.03.0 – 3.4Visual Studio 2019 verze 16.3
.NET5.xC# 9.03.8Visual Studio 2019 verze 16.8
6.xC# 103.9 – 3.10Visual Studio 2022 verze 17.0[43]

Visual Studio 2022 verze 17.2[44]

.NET7.xC# 114.xVisual Studio 2022
.NET8.xC# 124.8.0[45]Visual Studio 2022 verze 17.8 (Preview)[30]
PahýlTato část článku je příliš stručná nebopostrádá důležité informace. Pomozte Wikipedii tím, že ji vhodněrozšíříte.

„Ahoj, světe!“

[editovat |editovat zdroj]
ikona
Tato část článku potřebuje úpravy.
Můžete Wikipedii pomoci tím, že jivylepšíte. Jak by měly články vypadat, popisují stránkyVzhled a styl,Encyklopedický styl aOdkazy.

Následující jednoduchákonzolové aplikace vypíše „Ahoj, světe!“ nastandardní výstup.

usingSystem;namespaceMojeKonzolováAplikace{classHlavníTřída{staticvoidMain(string[]args){Console.WriteLine("Ahoj, světe!");}}}

Rozeberme krátce jednotlivé příkazy. Třídy, základní jednotky objektového programování, jsou v C# rozděleny pro lepší orientaci a jednoznačnost názvů do jmenných prostorů. Na počátku zdrojového kódu jmenujeme příkazemusing jmenné prostory, jež budeme používat – nebudeme pak muset rozepisovat jejich název, všechny třídy z nich jsou nám hned přístupny.

Na dalším řádku příkazemnamespace říkáme, že chceme zařadit kód vymezený následujícími složenými závorkami do jmenného prostoruMojeKonzolováAplikace. Hned poté definujeme klíčovým slovem class třídu Hlavní třída, její obsah bude opět vymezen dalšími složenými závorkami. Kód není nutné odsazovat (bílé znaky se ignorují), jen je to praktické.

Všimněme si také, že identifikátory mohou obsahovat písmenka s háčky a čárkami – je tomu tak již od prvních verzí jazyka.

Překladač hledá při vytváření spustitelného souboru vstupní bod aplikace. Musí se jednat o statickou metodu nevracející žádnou hodnotu nebo typint (celé číslo), která buď nepřebírá žádné argumenty, nebo pole řetězců (stringů) a která se jmenuje Main. Deklaraci takové metody vidíme na dalším řádku programu. Klíčové slovo static značí statickou metodu, tedy takovou část kódu, kterou je možno volat bez vytvoření instance třídy. Klíčové slovo void značí, že metoda nic nevrací.

Argumenty metody se vypisují do obyčejných závorek za její název. Podobně jako při deklarování proměnných se nejdříve uvádí typ proměnné (string[]) a pak její název (args). Pole značíme dvojicí hranatých závorek za názvem typu.

Tělo metody tvoří jediný řádek ukončený středníkem. Volá statickou metodu třídyConsole (sídlí ve jmenném prostoruSystem) jménemWriteLine, která za argument pojímá jedinou proměnnou typustring, kterou vypíše uživateli do konzole. Řetězce se ohraničují počítačovými uvozovkami.

Vývojová prostředí

[editovat |editovat zdroj]

XML Dokumentace

[editovat |editovat zdroj]

Systém dokumentace kódu je podobnýJavaDoc, používanému v jazyce Java. Významným rozdílem je ale to, že je založen na XML. Následující příkaz ukazuje komentář k metodě.

publicclassFoo{/// <summary>Popis metody.</summary>/// <param name="firstParam">Popis parametru metody</param>/// <returns>Popis návratové hodnoty metody</returns>publicstaticboolBar(intfirstParam){}}

Jak vidíme, každý řádek komentáře musí začínat řetězcem "///". Tyto komentáře často používají nástroje jako IntelliSense integrovaný v Microsoft Visual Studiu, který programátorovi při psaní kódu napovídá.

Název jazyka

[editovat |editovat zdroj]

Název jazyka C# je odvozen z hudební notace, kde křížek označuje zvýšení noty o půl tónu a v tomto případě by označoval notu cis, tedy C zvýšené o půl tónu. Podobně vznikl název jazyka C++ jako zlepšení jazyka C: „++“ totiž v syntaxi jazyka C znamená zvýšení hodnoty proměnné o 1.

Křížek na počítačové klávesnici (#) a křížek v hudební nauce (♯) jsou dva odlišné znaky. Pro zápis názvu jazyka C Sharp se nepoužívá znak hudebního křížku z technických důvodů, protože tento se na standardní klávesnici nevyskytuje, ale pro zjednodušení se používá klasický křížek. Toto je zakotveno ve specifikaci jazyka C#, ECMA-334. Jak jsme již řekli, toto opatření je spíše praktického rázu, takže v případech jako jsou různé marketingové materiály se často používá znak křížku z hudební notace.

Odkazy

[editovat |editovat zdroj]
  1. Dokument specifikace Microsoft C# 2.0 obsahuje pouze nové funkce verze 2.0. Pro starší funkce použijte výše uvedenou specifikaci 1.2.

V tomto článku byl použitpřeklad textu z článkuC Sharp (programming language) na anglické Wikipedii.

  1. Standard C#
  2. Microsoft .NET and .NET Core - Microsoft Lifecycle.docs.microsoft.com [online].Microsoft [cit. 2022-07-20].Dostupné online. (anglicky) 
  3. ECMA-334 [online].ECMA, 2022-06 [cit. 2022-07-19].Dostupné online. (anglicky) 
  4. What's new in the C# 2.0 Language and Compiler [online]. Microsoft [cit. 2014-06-11].Dostupné v archivu pořízeném z originálu dne December 18, 2010. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  5. HEJLSBERG, Anders; TORGERSEN, Mads.Overview of C# 3.0 [online]. Microsoft [cit. 2014-06-11].Dostupné online. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  6. Using C# 3.0 from .NET 2.0 [online]. Danielmoth.com, May 13, 2007 [cit. 2012-10-04].Dostupné online. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  7. Using C# 3.0 from .NET 2.0 [online]. Danielmoth.com, May 13, 2007 [cit. 2012-10-04].Dostupné online. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  8. HEJLSBERG, Anders.Future directions for C# and Visual Basic [online]. Microsoft [cit. 2011-09-21].Dostupné online. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  9. An Introduction to New Features in C# 5.0 [online]. Microsoft [cit. 2014-06-11].Dostupné online. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  10. Language feature implementation status [online]. Microsoft [cit. 2015-02-13].Dostupné online. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  11. What's new in C# 7 [online]. 2016-12-21.Dostupné online. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  12. New Features in C# 7.0 [online]. March 9, 2017 [cit. 2017-06-09].Dostupné online. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  13. What's new in C# 7.1 [online]. [cit. 2017-10-09].Dostupné online. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  14. Visual Studio 2017 15.3 Release Notes [online].Dostupné online. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  15. What's new in C# 7.2 [online]. [cit. 2017-11-26].Dostupné online. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  16. 12Visual Studio 2017 15.9 Release Notes [online].Dostupné online. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  17. What's new in C# 7.3 [online]. [cit. 2018-06-23].Dostupné online. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  18. What's new in C# 8.0 [online].Dostupné online. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  19. What's new in .NET Core 3.0.docs.microsoft.com [online].Microsoft, 2022-06-29 [cit. 2022-07-20].Dostupné online. (anglicky) 
  20. What's new in .NET Core 3.1.docs.microsoft.com [online].Microsoft, 2022-07-12 [cit. 2022-07-20].Dostupné online. (anglicky) 
  21. BILLWAGNER.What's new in C# 9.0 - C# Guide [online]. [cit. 2020-10-15].Dostupné online. (anglicky) Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  22. Visual Studio 2019 16.8 Release Notes [online].Dostupné online. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  23. What's new in C# 10 [online]. [cit. 2021-11-10].Dostupné online. (anglicky) Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  24. Visual Studio 2022 version 17.0 Release Notes [online].Dostupné online. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  25. 123 .NET Downloads (Linux, macOS, and Windows).Microsoft [online]. [cit. 2023-10-21].Dostupné online. (anglicky) 
  26. What's new in C# 11 - C# Guide.docs.microsoft.com [online].Microsoft, 2022-07-09 [cit. 2022-07-20].Dostupné online. (anglicky) 
  27. Download .NET 7.0 (Linux, macOS, and Windows).Microsoft [online]. [cit. 2023-01-30].Dostupné online. (anglicky) 
  28. BILLWAGNER. What's new in C# 12:Get an overview of the new features in C# 12.learn.microsoft.com [online].Microsoft, 2023-08-18 [cit. 2023-10-21].Dostupné online. (anglicky) 
  29. GEWARREN. Novinky v .NET 8.learn.microsoft.com [online]. 2023-10-07 [cit. 2023-10-21].Dostupné online. 
  30. 12VEDHAR. Zpráva k vydání verze Visual Studio 2022 Preview.learn.microsoft.com [online]. 2023-10-11 [cit. 2023-10-21].Dostupné online. 
  31. Anonymous Methods (C#)
  32. ?? Operator (C# Reference) [online]. Microsoft [cit. 2008-11-23].Dostupné online. 
  33. What's New for Visual C# in Visual Studio 2012 [online]. Microsoft Developer Network [cit. 2013-08-02].Dostupné online. 
  34. 12345DIETRICH, Erik; SMACCHIA, Patrick. The history of C# - C# Guide.docs.microsoft.com [online]. Microsoft, 2022-06-16 [cit. 2022-07-05]. Článek byl původně publikován na blogu NDepend.Dostupné online. (anglicky) 
  35. BILLWAGNER. What's new in C# 11 - C# Guide.docs.microsoft.com [online]. [cit. 2022-07-05].Dostupné online. (anglicky) 
  36. What's new in .NET 7.learn.microsoft.com [online].Microsoft, 2023-01-10 [cit. 2023-01-30].Dostupné online. (anglicky) 
  37. Numeric IntPtr - C# 11.0 draft specifications.learn.microsoft.com [online].Microsoft, 2022-09-29 [cit. 2023-01-31].Dostupné online. (anglicky) 
  38. C# Compiler warning waves.learn.microsoft.com [online]. 2022-09-29 [cit. 2023-01-30].Dostupné online. (anglicky) 
  39. 12BILLWAGNER. C# language versioning - C# Guide.docs.microsoft.com [online]. [cit. 2022-07-05].Dostupné online. (anglicky) 
  40. C# 10 and .NET 6 – Modern Cross-Platform Development - Sixth Edition.www.packtpub.com [online].Packt, 2021-12 [cit. 2022-07-19].Dostupné online. (anglicky) 
  41. Supported Roslyn package version mappings - Visual Studio (Windows).docs.microsoft.com [online].Microsoft, 2022-04-30 [cit. 2022-07-19].Dostupné online. (anglicky) 
  42. GEWARREN. .NET Standard.docs.microsoft.com [online].Microsoft, 2022-01-26 [cit. 2022-07-20].Dostupné online. (anglicky) 
  43. LANDER, Richard. Announcing .NET 6 -- The Fastest .NET Yet..NET Blog [online]. 2021-11-08 [cit. 2022-07-20].Dostupné online. (anglicky) 
  44. VEDHAR. Visual Studio 2022 version 17.2 Release Notes.docs.microsoft.com [online]. [cit. 2022-07-20].Dostupné online. (anglicky) 
  45. MAIAK. Podporovaná mapování verzí balíčků Roslyn - Visual Studio (Windows).learn.microsoft.com [online]. 2023-08-25 [cit. 2023-10-21].Dostupné online. 

Související články

[editovat |editovat zdroj]

Externí odkazy

[editovat |editovat zdroj]
Programovací jazyky
abecední seznam programovacích jazyků
multiparadigmatické

AdaC++Common LispDF#GoOberonPerlPHPPythonRakuRubyRustScalaSwiftTcl (Tk) •Vala

strukturované (procedurální)

AWKCCOBOLDCLForthFortranLuaModula-2 /Modula-3PascalPawnPL/SQL

objektové
funkcionální
dotazovací

LINQSPARQLSQLXQueryXSL (XSLTXSL-FOXPath)

logické
výukové
ezoterické
historické

ALGOLAPLBBASICCPL (BCPL) •JMUMPSPL/ISimula 67SNOBOL

další
skriptovací/strojový kódkompilované/interpretovanéinteraktivní/dávkovéWYSIWYG
Citováno z „https://cs.wikipedia.org/w/index.php?title=C_Sharp&oldid=25636476
Kategorie:
Skryté kategorie:

[8]ページ先頭

©2009-2026 Movatter.jp