Cis

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 7. června 2021; kontroly vyžadují 59 úprav .
Z#
Jazyková třída

multiparadigma :
objektově orientované ,
generické , procedurální , funkční , založené na událostech ,

reflexní
Objevil se v 2001
Autor Anders Hejlsberg
Vývojář .NET Foundation
Přípona souboru .csnebo.csx
Uvolnění 10.0 ( 8. listopadu 2021 )
Testovací verze 11 ( 22. února 2022 )
Typový systém statický , dynamický , přísný , bezpečný , odvození typu
Hlavní implementace .NET Framework , Mono , .NET , DotGNU (zmrazené) , Univerzální platforma Windows
Dialekty , Spec# , Polyphonic C# , Enhanced C#
Byl ovlivněn C++ , Java [1] [2] [3] , Delphi , Modula-3 a Smalltalk
ovlivnil , F# , Nemerle , Vala , Windows PowerShell , Kotlin
Licence

Kompilátor Roslyn : licence MIT [4]
.NET Core CLR : licence MIT [5]

Mono kompilátor : duální GPLv3 a MIT/X11

DotGNU : duální GPL a LGPL
webová stránka docs.microsoft.com/en-us…
Plošina Společná jazyková infrastruktura
 Mediální soubory na Wikimedia Commons

C# (vyslovováno c sharp ) je obecný objektově orientovaný programovací jazyk . Byl vyvinut v letech 1998-2001 skupinou inženýrů Microsoftu vedenou Andersem Hejlsbergem a Scottem Wilthaumotem [6] jako jazyk pro vývoj aplikací pro platformy Microsoft .NET Framework a .NET Core . Následně byl standardizován jako ECMA -334 a ISO / IEC 23270.

C# patří do rodiny jazyků se syntaxí podobnou C , jejíž syntaxe je nejblíže C++ a Javě . Jazyk je staticky typován , podporuje polymorfismus , přetěžování operátorů (včetně explicitních a implicitních přetypovaných operátorů), delegáty , atributy, události , proměnné , vlastnosti , generické typy a metody, iterátory , anonymní funkce s podporou uzavření , LINQ , výjimky , komentáře v XML formát .

Tím, že hodně převzal od svých předchůdců - jazyky C++ , Delphi , Modula , Smalltalk a zejména Java  - C#, spoléhá na praxi jejich používání, vylučuje některé modely, které se ukázaly jako problematické při vývoji softwarových systémů. , například C# na rozdíl od C++ nepodporuje vícenásobnou dědičnost tříd (mezitím je povolena vícenásobná implementace rozhraní ).

Vlastnosti jazyka

C#‎ byl navržen jako programovací jazyk na aplikační úrovni pro CLR a jako takový závisí především na schopnostech samotného CLR. To se týká především systému typu C#, který odráží BCL . Přítomnost nebo nepřítomnost určitých výrazových jazykových rysů je diktována tím, zda lze konkrétní jazykový rys přeložit do odpovídajících konstruktů CLR. Takže s vývojem CLR z verze 1.1 na 2.0 byl samotný C # výrazně obohacen; podobné interakce by se měly očekávat i v budoucnu (tento vzorec však byl porušen vydáním C # 3.0, což je jazykové rozšíření, které se nespoléhá na rozšíření platformy .NET). CLR poskytuje C#‎, stejně jako všechny ostatní jazyky orientované na .NET , s mnoha funkcemi, které „klasické“ programovací jazyky postrádají. Například garbage collection není implementován v C# samotném, ale je prováděn CLR pro programy napsané v C#, stejně jako se to dělá pro programy napsané v VB.NET , J# atd.

Název jazyka

Název "Sharp" (z anglického sharp - sharp) pochází z abecedního hudebního zápisu , kde latinské písmeno C odpovídá notě Do , a ostré znaménko (anglicky sharp) znamená zesílení zvuku odpovídající notě o půltón [7] , který je podobný názvu jazyka C++ , kde "++" znamená proměnný přírůstek . Název je také řetězová hra CC++ → C++++(C#), protože symbol „#“ může být reprezentován jako složený ze 4 znaků „+“ [8] .

Kvůli technickým omezením zobrazení (standardní písma, prohlížeče atd.) a také kvůli tomu, že na standardní počítačové klávesnici není zobrazeno ostré znaménko ♯, se při psaní názvu programovacího jazyka používá znak libry (#) . [9] . Tato konvence se odráží ve specifikaci jazyka C# ECMA-334 [10] . Microsoft však v praxi (například při reklamě a krabicovém designu [11] ) používá ostrý znak.

Není zvykem překládat názvy programovacích jazyků, proto se jazyk nazývá pomocí transkripce „C Sharp“.

Standardizace

C# je standardizováno v ECMA (ECMA-334) [12] a ISO (ISO/IEC 23270) [13] .

Existují nejméně tři nezávislé implementace C# založené na této specifikaci, které jsou v současné době v různých fázích vývoje:

Verze

Během vývoje jazyka C# bylo vydáno několik jeho verzí:

Verze Specifikace jazyka datum .SÍŤ vizuální studio
ECMA ISO/IEC Microsoft
C# 1.0 prosince 2002 duben 2003  (nedostupný odkaz) ledna 2002 ledna 2002 .NET Framework 1.0 Visual Studio .NET (2002)
C# 1.1
C# 1.2
října 2003 dubna 2003 .NET Framework 1.1 Visual Studio .NET 2003
C# 2.0 června 2006 září 2006 září 2005 [14] listopadu 2005 .NET Framework 2.0
.NET Framework 3.0
Visual Studio 2005
C# 3.0 Chybí [15] srpna 2007 listopadu 2007 .NET Framework 2.0 (kromě LINQ )
.NET Framework 3.0 (kromě LINQ )
.NET Framework 3.5
Visual Studio 2008
C# 4.0 dubna 2010 dubna 2010 .NET Framework 4.0 Visual Studio 2010
C# 5.0 prosince 2017 prosince 2018 červen 2013 srpna 2012 .NET Framework 4.5 Visual Studio 2012
C# 6.0 Chybějící července 2015 .NET Framework 4.6
.NET Core 1.0
.NET Core 1.1
Visual Studio 2015
C# 7.0 březen 2017 .NET Framework 4.6.2
.NET Framework 4.7
Visual Studio 2017 15.0
C# 7.1 srpna 2017 .NET Core 2.0 Visual Studio 2017 15.3
C# 7.2 listopadu 2017 Visual Studio 2017 15.5
C# 7.3 května 2018 .NET Core 2.1
.NET Core 2.2
.NET Framework 4.8
Visual Studio 2017 15.7
C# 8.0 září 2019 .NET Core 3.0
.NET Core 3.1
.NET Framework 4.8
Visual Studio 2019 16.3
C# 9.0 září 2020 .NET 5.0 Visual Studio 2019 16.8
C# 10.0 července 2021 .NET 6.0 Visual Studio 2022 17.0
Obecné informace o verzích
Verze Inovace
C# 2.0
  • Částečné typy
  • generické typy ( generika )
  • Iterátory a klíčové slovoyield
  • Anonymní metody
  • operátor null -union
  • Typy s možností null
C# 3.0
  • Jazykově integrované dotazy ( LINQ )
  • Inicializátory objektů a kolekce
  • Lambda výrazy
  • Výrazové stromy
  • Implicitní psaní a klíčové slovovar
  • Anonymní typy
  • Metody rozšíření
  • Automatické vlastnosti
C# 4.0
  • Dynamické propojení a klíčové slovodynamic
  • Pojmenované a volitelné argumenty
  • Generalizovaná kovariance a kontravariance
  • Knihovna TPL , koncept úkolů a třídy Task,Parallel
  • TřídaMemoryCache
  • Třídy paralelního sběru
C# 5.0
  • Šablona TAP
  • asynchronní metody asyncaawait
  • Informace o volajícím
C# 6.0
  • Kompilátor jako služba
  • Import členů statických typů do jmenného prostoru
  • Filtry výjimek
  • awaitv blocích catch/finally
  • Inicializátory automatických vlastností
  • Automatické vlastnosti pouze pro čtení
  • null - podmíněné operace ( ?.a ?[])
  • Řetězcová interpolace
  • Operátornameof
  • Inicializátor slovníku
  • Funkce redukované na výrazy
C# 7.0 [16]
  • out-proměnné
  • Shoda vzorů
  • Šablony sis
  • Vzory a výrazswitch
  • N-tice
  • Rozbalení n-tic (dekonstruktorů)
  • Místní funkce
  • Doslovné vylepšení
  • Místní proměnné a návratové hodnoty podle odkazu
  • Rozšíření seznamu typů vrácených asynchronními metodami
  • Více členů třídy jako výrazy
  • throwvýrazy
C# 8.0
  • Členové pouze pro čtení
  • Výchozí členové rozhraní
  • Vylepšení přiřazování vzorů
  • pomocí deklarací
  • Statické lokální funkce
  • Odnímatelné referenční struktury
  • Typy odkazů s možnou hodnotou Null
  • Asynchronní vlákna
  • Indexy a rozsahy
  • Přiřazení svazku NULL
  • Nespravované konstruované typy
  • Stackalloc výrazy ve vnořených výrazech
  • Více členů třídy jako výrazy
  • Vylepšení interpolovaných řetězců
C# 9.0
  • nulový odborový operátor (??)
  • Prázdné parametry pro výrazy lambda
  • Native Int: nint, nuint
  • disjunktní unie
  • Přidány with-výrazy
  • nový modifikátorinitonly
C# 10.0
  • Přidání role="alert"atributů zprávy
  • Aktualizace součástí Counterk přidánírole="status"
  • Nahrazení ul v NavBarkomponentě zanav
  • Nový název přepínacího tlačítkaNavBar
  • Přejít na sémantické značení

Verze 1.0

Projekt C# byl zahájen v prosinci 1998 a dostal kódové označení COOL (C-style Object Oriented Language). Verze 1.0 byla oznámena s platformou .NET v červnu 2000, ve stejném roce jako první veřejná beta ; C# 1.0 byl konečně vydán s Microsoft Visual Studio .NET v únoru 2002 .

První verze C# se svými schopnostmi podobala Javě 1.4 a poněkud je rozšířila: například C# mělo vlastnosti (které v kódu vypadaly jako objektová pole , ale ve skutečnosti se při přístupu nazývaly metody tříd), indexery (podobné vlastnostem, ale přebírající parametr jako indexové pole), události , delegáti , smyčky , struktury předávané hodnotou, automatický převod vestavěných typů na objekty v případě potřeby ( boxing ), atributy, vestavěné prostředky interakce s nespravovaným kódem ( DLL , COM ) a více. foreach

Kromě toho bylo rozhodnuto přenést některé funkce C++ do C#, které v Javě chyběly: nepodepsané typy, přetěžování operátorů (s určitými omezeními, na rozdíl od C++ ), předávání parametrů metodě odkazem , metody s proměnným počtem parametrů, operátor goto(s omezeními). Také v C# ponechali omezenou schopnost pracovat s ukazateli  - v kódových místech speciálně označených slovem unsafea při specifikaci speciální volby kompilátoru .

Verze 2.0

Návrh specifikace C# 2.0 byl poprvé publikován společností Microsoft v říjnu 2003 ; v roce 2004 byla vydána beta verze (projekt s kódovým označením Whidbey), C# 2.0 bylo konečně vydáno 7. listopadu 2005 spolu s Visual Studio 2005 a .NET 2.0.

Nové funkce ve verzi 2.0

Verze 3.0

V červnu 2004 Anders Hejlsberg poprvé hovořil na webu Microsoftu o plánovaných jazykových rozšířeních v C#3.0 [18] . Září 2005 vidělo vydání návrhu specifikace C# 3.0 a beta verze C# 3.0, která se instaluje jako doplněk k existujícímu Visual Studiu 2005 a .NET 2.0. Tato verze jazyka byla nakonec zahrnuta do Visual Studio 2008 a .NET 3.5.

Nové funkce ve verzi 3.0

C# 3.0 zavedl do jazyka následující radikální doplňky:

Zákazník c = nový zákazník (); c . Jméno = "James" ; c . Věk = 30 ; lze napsat jako Zákazník c = nový zákazník { Jméno = "James" , Věk = 30 }; listOfFoo . Where ( delegát ( Foo x ) { return x . size > 10 ; }); nyní lze zapsat jako listOfFoo . Kde ( x => x . velikost > 10 );
  • Stromy výrazů:
Výrazy lambda lze nyní reprezentovat jako datovou strukturu , kterou lze procházet za běhu, což umožňuje překlad výrazů C# se silným typem do jiných domén (jako jsou výrazy SQL).
  • Implicitní typování: Odvozování typů lokální proměnné. Pro implicitní psaní se místo názvu datového typu používá klíčové slovo var. Pak během kompilace kompilátor sám odvodí datový typ na základě přiřazené hodnoty: var x = "hello";namístostring x = "hello";
  • Anonymní typy:var x = new { Name = "James" };
  • Metody rozšíření. Nyní můžete přidat nové metody do existujících tříd. Implementováno pomocí klíčového slova thisv prvním parametru statické funkce statické třídy.
public static class StringExtensions { public static int ToInt32 ( tento řetězec val ) { return Int32 . rozebrat ( val ); } } // ... řetězec s = "10" ; int x = s . ToInt32 ();
  • Automatické vlastnosti: kompilátor vygeneruje soukromé ( soukromé ) pole a odpovídající přístupový objekt a mutátor pro kód formuláře
public string Name { get ; soukromý soubor ; }

C# 3.0 je kompatibilní s C# 2.0 v kódu generovaném MSIL ; vylepšení jazyka jsou čistě syntaktická a jsou implementována ve fázi kompilace. Například mnoho integrovaných dotazů LINQ lze provést pomocí anonymních delegátů v kombinaci s predikátovými metodami na kontejnerech jako List.FindAlla List.RemoveAll.

Verze 4.0

Ukázka C# 4.0 byla vydána na konci roku 2008 spolu s CTP verzí Visual Studio 2010.

Visual Basic 10.0 a C# 4.0 byly vydány v dubnu 2010 spolu s vydáním Visual Studio 2010.

Nové funkce ve verzi 4.0 [19]
  • Schopnost používat pozdní vazbu, používat:
    • s dynamicky typovanými jazyky ( Python , Ruby )
    • s objekty COM
    • odraz
    • objekty s proměnlivou strukturou (DOM). Zobrazí se klíčové slovo dynamic.
  • Pojmenované a volitelné parametry
  • Co je nového v COM interop
  • Kovariance a rozporuplnost obecných rozhraní a delegátů
  • Kódové smlouvy
  • TPL Task Parallel Library , Task Concept and Classes Task, TaskFactory,Parallel
  • Přidána třída MemoryCache, která je určena pro ukládání obsahu do mezipaměti. Je podobná Cachetřídě ASP.NET, ale lze ji použít při psaní webových/grafických/ konzolových aplikací .
  • Byl přidán jmenný prostor System.Collections.Concurrent a nové třídy souběžných kolekcí ( ConcurrentQueue , ConcurrentStack , ConcurrentBag ,…), které poskytují nejen vyšší efektivitu, ale také úplnější bezpečnost vláken.

Příklady:

dynamický výpočet = GetCalculator (); intsum = calc _ _ Přidejte ( 10 , 20 ); // Dynamické volání public void SomeMethod ( int x , int y = 5 , int z = 7 ); // Volitelné parametry

Verze 5.0

Nové funkce ve verzi 5.0

  • TAP (Task-based Asynchronous Pattern). TAP používá jednu metodu k reprezentaci inicializace a dokončení asynchronní operace.
  • Asynchronní metody ( asynca await) - jako implementace vzoru TAP.
  • Informace o volajícím

Verze 6.0

Nové funkce ve verzi 6.0

  • null - podmíněné příkazy. Přidáni noví operátoři: ?.a ?[]:
int? délka = zákazníci ?. Délka ; // null, pokud jsou zákazníci null Customer first = customers ?[ 0 ]; // null, pokud jsou zákazníci null
  • Funkce komprimované na výrazy ( funkce s tělem výrazu ). Nyní lze definici metody zadat pomocí syntaxe lambda:
public Point Move ( int dx , int dy ) => new Point ( x + dx , y + dy );
  • Inicializátory automatických vlastností. Automatické vlastnosti lze nyní inicializovat při deklaraci:
public string First { get ; nastavit ; } = "Jane" ;
  • Automatické vlastnosti pouze pro čtení. Automatické vlastnosti lze nyní deklarovat bez nastavovacích prvků:
public string First { get ; } = "Jane" ;
  • Inicializátory indexu. Nyní můžete inicializovat nejen objekty a kolekce, ale také slovníky:
var čísla = nový Slovník < int , řetězec > { [7] = "sedm" , [9] = "devět" , [13] = "třináct" };
  • Řetězcová interpolace . Místo použití konstrukcí s String.Format(), například:
var s = řetězec . Formát ( "{0} je {1} rok{{s}} starý" , str . Jméno , str . Věk );

nyní můžete umístit kód přímo na řádek:

var s = $"{p.Name} je {p.Age} rok{{s}} starý" ;
  • Filtry výjimek. Nyní můžete nastavit podmínky pro bloky catch:
try { } catch ( Exception e ) when ( Log ( e )) { }
  • Import funkcí statického typu. Nyní je možný přístup ke statickým členům typů bez zadání celého jména těchto členů:
pomocí statického systému . konzole ; pomocí statického systému . matematika ; class Program { static void Main () { WriteLine ( Sqrt ( 3 * 3 + 4 * 4 )); } }
  • operátor nameof. Nový operátor, který vrací reprezentaci kompaktního řetězce pro typ předaný jako argument:
WriteLine ( nameof ( osoba . Adresa . PSČ )); // vytiskne "PSČ"
  • Pro asynchronní programování byla přidána možnost používat operátory awaituvnitř bloků catch:finally
zdroj res = null ; try { res = wait Resource . OpenAsync ( ... ); // Mohl bys to udělat. } catch ( ResourceException e ) { wait Resource . LogAsync ( res , e ); // Nyní to můžete udělat… } konečně { if ( res != null ) wait res . CloseAsync (); // … a tohle. }

Verze 7.0

Nové funkce ve verzi 7.0 [16]

  • out-proměnné, které vám umožňují deklarovat proměnné okamžitě při volání metody (navíc rozsahem pro takové proměnné je vnější blok):
p . GetCoordinates ( out int x , out int y );
  • Shoda vzorů. Zavádí se koncept šablony ( pattern), což je syntaktická konstrukce, která umožňuje kontrolovat shodu proměnné s určitou formou a extrahovat z ní informace.
  • Šablony s is( islze nyní použít nejen s typem, ale také se šablonou - jako správný argument)
  • Vzory a výraz switch. Případy použití switchbyly rozšířeny, nyní můžete:
    • používat jakékoli typy (nejen primitivní);
    • používat vzory ve výrazech case;
    • přidat k výrazům další podmínky case(pomocí klíčového slova when).
  • N-tice. Typ n-tice s přidanou hodnotou (struct ValueTuple) a syntaxe pro práci s daty tohoto typu:
( string , string , string ) LookupName ( long id ) // return type is a tuple { ... // inicialize data return ( first , middle , last ) ; // doslovný n-tici }
  • Rozbalování n-tic . Byla přidána nová konstrukce syntaxe , deconstructor , pro načtení n-tice členů třídy.
  • místní funkce. Nyní lze funkci, která se používá pouze v těle metody, deklarovat přímo v těle této metody.
  • Doslovné vylepšení. Byly přidány binární literály a oddělovací znak ( _) v číselných literálech .
  • Místní proměnné a návratové hodnoty podle odkazu. Funkčnost klíčového slova byla rozšířena ref. Nyní můžete vrátit data z metody nebo je uložit do lokální proměnné odkazem.
  • Rozšíření seznamu typů vrácených asynchronními metodami
  • Více členů třídy jako výrazy. Syntaxe funkce zhuštěná na výrazy ( expression-bodied functions) nyní platí pro settery, getry, konstruktory a destruktory.
  • throw-výrazy. Nyní lze použít throwve funkcích zhuštěných na výrazy ( expression-bodied functions):
public string GetLastName () => throw new NotImplementedException ();


Verze 8.0

Nové funkce ve verzi 8.0 [20]

  • Modifikátor readonly. Byl vytvořen k označení člena, který nezmění stav.
  • Metody rozhraní ve výchozím nastavení. Nyní, když vytvoříte metodu rozhraní, můžete deklarovat její výchozí implementaci, kterou lze přepsat ve třídě, která implementuje toto rozhraní.
  • Shoda vzorů. Funkce umožňuje pracovat se šablonami v závislosti na formátu v souvisejících, ale odlišných typech dat.
    • rekurzivní vzory. Je šablonový výraz, který je aplikován na výsledky jiného šablonového výrazu.
    • Příkazy Switch umožňují snížit počet případů a zlomů a také složených závorek.public enum Rainbow { červená , oranžová , žlutá , zelená , modrá , indigová , fialová } public static RGBColor FromRainbow ( Rainbow colorBand ) => colorBand switch { Rainbow . Červená => nová RGBColor ( 0 xFF , 0 x00 , 0 x00 ), Rainbow . Oranžová => nová barva RGBColor ( 0 xFF , 0 x7F , 0 x00 ), Rainbow . Žlutá => nová RGBColor ( 0 xFF , 0 xFF , 0 x00 ), Rainbow . Zelená => nová RGBColor ( 0 x00 , 0 xFF , 0 x00 ), Rainbow . Modrá => nová barva RGBColor ( 0 x00 , 0 x00 , 0 xFF ), Rainbow . Indigo => new RGBColor ( 0 x4B , 0 x00 , 0 x82 ), Rainbow . Violet => new RGBColor ( 0 x94 , 0 x00 , 0 xD3 ), _ => vyvolání nové ArgumentException ( zpráva : "neplatná hodnota výčtu" , ​​paramName : nameof ( colorBand )), };
    • Vlastnosti šablon. Umožňuje porovnat vlastnosti studovaného objektu pomocí { variable : value } => ....
    • Tuple šablony. Používá se, když potřebujete pracovat s více vstupy.(value1, value2,..) => ...
  • Oznámení using. Toto je deklarace proměnné, které předchází klíčové slovo using. Říká kompilátoru, že deklarovaná proměnná by měla být odstraněna na konci rozsahu .
  • Statická lokální metoda. Nyní se můžete ujistit, že metoda nezahrnuje žádné proměnné z rozsahu tím, že k ní přidáte modifikátor static.
  • Referenční struktury budou odstraněny. Referenční struktury nelze implementovat IDisposable(stejně jako jakákoli jiná rozhraní). Proto k odstranění ref structpotřebujete dostupný soubor void Dispose().
  • Typy hodnot, které přijímají hodnotu null. Nyní, abyste naznačili, že proměnná typu hodnoty přijímá hodnotu null, musíte před názvem typu uvést předponu s?
  • asynchronní vlákna. V první řadě je to rozhraní IAsyncEnumerable<T>. A za druhé konstrukce foreachs await.veřejný statický asynchronní systém . sbírky . Obecný . IAsyncEnumerable < int > GenerateSequence () { for ( int i = 0 ; i < 20 ; i ++) { wait Task . zpoždění ( 100 ); výnos výnos i ; } } // nebo wait foreach ( číslo var v GenerateSequence ()) { Console . WriteLine ( číslo ); }
  • Asynchronní typy uvolnění. Počínaje C# 8.0 tento jazyk podporuje asynchronní uvolněné typy, které implementují System.IAsyncDisposable. Operand výrazu usingmůže implementovat IDisposablenebo IAsyncDisposable. V případě, že IAsyncDisposablekompilátor vygeneruje kód pro awaitvrácený Taskz IAsyncDisposable.DisposeAsync.
  • Indexy a rozsahy. Rozsahy a indexy poskytují stručnou syntaxi pro přístup k jednotlivým prvkům nebo rozsahům v sekvenci. Inovace zahrnuje operátory ^a .., stejně jako System.IndexaSystem.Range
  • operátor přiřazení null union. Operátor ??=lze použít k přiřazení hodnoty pravého operandu levému operandu pouze v případě, že se levý operand vyhodnotí jako null.Seznam < int > cisla = null ; int? i = null ; čísla ??= new Seznam < int >(); čísla . Přidat ( i = 17 ); čísla . Přidat ( i = 20 ); Konzole . WriteLine ( string . Join ( " " , čísla )); // výstup: 17 17 Konzole . WriteLine ( i ); // výstup: 17
  • Nespravované konstruované typy. Počínaje C# 8.0 je vytvořený typ hodnoty nespravovaný, pokud obsahuje pole výhradně nespravovaných typů (například generický typ <T>).
  • Výraz stackalloc ve vnořených výrazech. Nyní, pokud je výsledek výrazu stackalloc typu System.Span<T>nebo System.ReadOnlySpan<T>, lze jej použít v jiných výrazech.Span < int > čísla = stackalloc [] { 1 , 2 , 3 , 4 , 5 , 6 }; var ind = čísla . IndexOfAny ( stackalloc [] { 2 , 4 , 6 , 8 }); Konzole . WriteLine ( ind ); // výstup: 1
  • Pořadí značek $a @v interpolovaných doslovných řetězcích nyní může být libovolné.


Příklad "Ahoj světe!"

Níže je uveden kód klasického programu „ Ahoj světe “ v C# pro konzolovou aplikaci:

Konzole . WriteLine ( "Ahoj světe!" ); // Výstup daného textu do konzole Konzole . ReadKey (); // Počkejte, až uživatel stiskne klávesu

a kód stejného programu pro aplikaci Windows Forms:

jmenný prostor WindowsForms ; Program veřejné třídy { [STATthread] public static void Main () => nový DemoForm (). ShowDialog (); } veřejná třída DemoForm : Formulář { Štítek štítek = nový štítek (); veřejný DemoForm () { štítek . Text = "Ahoj světe!" ; toto . Ovládací prvky . Přidat ( štítek ); toto . StartPosition = FormStartPosition . CenterScreen ; toto . BackColor = Barva . bílý ; toto . FormBorderStyle = FormBorderStyle . Pevné 3D ; } }

Implementace

Existuje několik implementací C#:

Poznámky

  1. "Protože jazyk C# zdědil svou syntaxi z C++ a Javy..." Trey Nash. C # 2010: zrychlený kurz pro profesionály = Accelerated C # 2010. - M . : Williams, 2010. - S.  17 . — 592 s. — ISBN 978-5-8459-1638-9 .
  2. "Jazyk C# <...> zdědil mnoho užitečných funkcí z jiných programovacích jazyků a přímo souvisí se dvěma nejpoužívanějšími počítačovými jazyky na světě - C a C++, stejně jako s Jazyk Java“ , ale dále: „Spojení mezi C # a Java je složitější . Oba jazyky jsou navrženy tak, aby vytvářely přenosný kód založený na C a C++ pomocí jejich syntaxe a objektového modelu. Mezi těmito jazyky však neexistuje přímá souvislost, jsou spíše bratranci, mají společné předky, ale v mnohém se liší“ Herbert Schildt . C# tutoriál = C#. Průvodce pro začátečníky. - M .: Piter , 2003. - S. 20. - ISBN 966-552-121-7 .
  3. Herbert Schildt . Kompletní reference pro C# = C#: Kompletní reference. - M . : Nakladatelství "Williams", 2004. - S.  26 -27. — 752 s. — ISBN 5-8459-0563-X .
  4. Licence (Roslyn) na úložišti Github . Získáno 4. ledna 2022. Archivováno z originálu dne 4. ledna 2022.
  5. Licence (.NET CLR) na úložišti Github . Získáno 4. ledna 2022. Archivováno z originálu dne 4. ledna 2022.
  6. Liberty D. Programovací jazyk C # // Programování v C# . - Petrohrad. - 2003: Symbol-Plus, 2003. - S.  26 . — 688 s. — ISBN 5-93286-038-3 .
  7. Kovacs, James C#/.NET History Lekce  ( 7. září 2007). Získáno 23. března 2011. Archivováno z originálu dne 21. srpna 2011.
  8. AZ programovacích jazyků: C#  (angličtina)  (odkaz není k dispozici) . computerworld.com.au (1. října 2008). Získáno 2. září 2014. Archivováno z originálu 2. dubna 2015.
  9. Microsoft C# FAQ (downlink) . Microsoft _ Získáno 25. března 2008. Archivováno z originálu 30. dubna 2003. 
  10. Specifikace jazyka C#  (neurčité) . — 4. - Ecma International , 2006. Archivovaná kopie (odkaz není k dispozici) . Datum přístupu: 26. ledna 2011. Archivováno z originálu 2. prosince 2012. 
  11. Visual C# .net Standard (JPEG). Microsoft (4. září 2003). Získáno 18. června 2009. Archivováno z originálu 21. srpna 2011.
  12. Standard ECMA-334 C# Language Specification, 4.  vydání . Ecma International (červen 2006). Získáno 16. května 2017. Archivováno z originálu 31. října 2010.
  13. ISO/IEC 23270:2003 Informační technologie --  Specifikace jazyka C# . Mezinárodní organizace pro normalizaci (duben 2003). Získáno 16. 5. 2017. Archivováno z originálu 5. 8. 2017.
  14. Specifikace pro Microsoft C# 2.0 obsahuje pouze popis nových funkcí verze 2.0. Specifika verze jsou popsána ve specifikaci 1.2 výše.
  15. Jazykové verze C# 3.0, 4.0 a 5.0 zatím nemají schválené specifikace ECMA nebo ISO/IEC.
  16. 12 Mads Torgersen . Nové funkce v C# 7.0 . Blog .NET . Microsoft (9. března 2017). Získáno 7. 5. 2017. Archivováno z originálu 11. 4. 2017.  
  17. Rozdíly mezi C++ šablonami a C# Generics (C# Programming Guide  ) . Microsoft (17. prosince 2016). Získáno 16. května 2017. Archivováno z originálu dne 7. srpna 2021.
  18. Anders Hejlsberg - Programování dat v C#  3.0 . Tým Channel 9 . Microsoft (16. června 2004). Staženo 16. 5. 2017. Archivováno z originálu 12. 11. 2018.
  19. Visual Studio 2010: Příklady pro C# 4.0 . Microsoft (17. července 2012). Staženo 16. 5. 2017. Archivováno z originálu 28. 2. 2017.
  20. Nové funkce v C# 8.0 . docs.microsoft.com. Získáno 11. června 2020. Archivováno z originálu dne 8. srpna 2020.
  21. Dot Net Anywhere . Získáno 5. března 2009. Archivováno z originálu dne 4. května 2009.

Literatura

  • John Skeet. C# pro profesionály: jemnosti programování, 3. vydání, nový překlad = C# in Depth, 3. ed.. - M. : "Williams" , 2014. - 608 s. - ISBN 978-5-8459-1909-0 .
  • Christian Nagel a spol. C# 5.0 a .NET 4.5 pro profesionály = Professional C# 5.0 a .NET 4.5. - M. : "Dialektika" , 2013. - 1440 s. - ISBN 978-5-8459-1850-5 .
  • A. Hejlsberg, M. Torgersen, S. Wiltamuth, P. Gold. programovací jazyk C#. Klasická informatika. 4. vydání = programovací jazyk C# (pokrývající C# 4.0), 4. vydání. - Petrohrad. : "Petr" , 2012. - 784 s. - ISBN 978-5-459-00283-6 . Archivováno 10. října 2011 na Wayback Machine
  • E. Stillman, J. Green. Učení C#. 2. vydání = Head First C#, 2. vydání. - Petrohrad. : "Piter" , 2012. - 704 s. - ISBN 978-5-4461-0105-4 .  (nedostupný odkaz)
  • Andrew Troelsen. C# 5.0 a .NET 4.5 Framework, 6. vydání = Pro C# 5.0 a .NET 4.5 Framework, 6. vydání. - M .: "Williams" , 2013. - 1312 s. — ISBN 978-5-8459-1814-7 .
  • Joseph Albahari, Ben Albahari. C# 6.0. Adresář. Úplný popis jazyka = C# 6.0 v kostce: Definitivní reference. - M .: "Williams" , 2018. - 1040 s. - ISBN 978-5-8459-2087-4 . — ISBN 978-1-491-92706-9 .
  • Herbert Schildt. C# 4.0: The Complete Reference = C# 4.0 The Complete Reference. - M .: "Williams" , 2010. - S. 1056. - ISBN 978-5-8459-1684-6 .
  • Christian Nagel, Carly Watson a kol. Visual C # 2010: celý kurz = Beginning Microsoft Visual C # 2010. - M . : Dialectics , 2010. - ISBN 978-5-8459-1699-0 .

Odkazy