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 |
Cω , Spec# , Polyphonic C# , Enhanced C# |
Byl ovlivněn |
C++ , Java [1] [2] [3] , Delphi , Modula-3 a Smalltalk |
ovlivnil |
Cω , 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 C → C++ → 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í:
Obecné informace o verzích
Verze |
Inovace
|
C# 2.0
|
- 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
|
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
- Částečné typy (oddělení implementace třídy do více než jednoho souboru ).
- Generické nebo parametrizované typy ( generika ). Na rozdíl od šablon C++ podporují některé další funkce a pracují na úrovni virtuálního stroje . Parametry generického typu však nemohou být výrazy, nemohou být zcela nebo částečně specializované, standardně nepodporují parametry šablony, nelze je zdědit z parametru šablony atd. [17]
- Nová forma iterátoru , která vám umožňuje vytvářet korutiny s klíčovým slovem yield, podobně jako Python a Ruby .
- Anonymní metody, které poskytují funkci uzavření .
- Operátor null join: '??': return obj1 ?? obj2;znamená (v notaci C# 1.0) return obj1!=null ? obj1 : obj2;.
- Typy s možnou hodnotou Null jsou hodnoty ( označené otazníkem, například int? i = null;), které jsou stejnými typy hodnot, které mohou také nabývat hodnoty null. Tyto typy umožňují lepší interakci s databázemi prostřednictvím jazyka SQL .
- Schopnost vytvářet uložené procedury , spouštěče a dokonce i datové typy v jazycích .Net (včetně C#).
- Podpora 64bitových výpočtů, což mimo jiné umožňuje zvětšit adresní prostor a používat 64bitové primitivní datové typy .
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:
- klíčová slova select, from, where, která umožňují provádět dotazy z dokumentů XML , kolekcí atd. Tyto dotazy jsou podobné dotazům SQL a jsou implementovány komponentou LINQ . (Samotná fráze „jazykový integrovaný dotaz“ se překládá jako „jazykově integrovaný dotaz“.)
- Inicializace objektu spolu s jeho vlastnostmi:
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 );
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
- ↑ "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 .
- ↑ "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 .
- ↑ Herbert Schildt . Kompletní reference pro C# = C#: Kompletní reference. - M . : Nakladatelství "Williams", 2004. - S. 26 -27. — 752 s. — ISBN 5-8459-0563-X .
- ↑ Licence (Roslyn) na úložišti Github . Získáno 4. ledna 2022. Archivováno z originálu dne 4. ledna 2022. (neurčitý)
- ↑ Licence (.NET CLR) na úložišti Github . Získáno 4. ledna 2022. Archivováno z originálu dne 4. ledna 2022. (neurčitý)
- ↑ Liberty D. Programovací jazyk C # // Programování v C# . - Petrohrad. - 2003: Symbol-Plus, 2003. - S. 26 . — 688 s. — ISBN 5-93286-038-3 .
- ↑ 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.
- ↑ 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.
- ↑ Microsoft C# FAQ (downlink) . Microsoft _ Získáno 25. března 2008. Archivováno z originálu 30. dubna 2003. (neurčitý)
- ↑ 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. (neurčitý)
- ↑ Visual C# .net Standard (JPEG). Microsoft (4. září 2003). Získáno 18. června 2009. Archivováno z originálu 21. srpna 2011. (neurčitý)
- ↑ 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.
- ↑ 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.
- ↑ 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.
- ↑ Jazykové verze C# 3.0, 4.0 a 5.0 zatím nemají schválené specifikace ECMA nebo ISO/IEC.
- ↑ 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.
- ↑ 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.
- ↑ 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.
- ↑ 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. (neurčitý)
- ↑ Nové funkce v C# 8.0 . docs.microsoft.com. Získáno 11. června 2020. Archivováno z originálu dne 8. srpna 2020. (Ruština)
- ↑ Dot Net Anywhere . Získáno 5. března 2009. Archivováno z originálu dne 4. května 2009. (neurčitý)
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
V bibliografických katalozích |
|
---|
Mezinárodní standardy Ecma |
---|
|
normy ISO |
---|
- Kategorie: Kategorie: normy ISO
- Kategorie:Protokoly OSI
|
1 až 9999 |
|
---|
10 000 až 19999 |
|
---|
20 000+ |
|
---|
Viz také: Seznam článků, jejichž názvy začínají na „ISO“ |
C programovací jazyk |
---|
|
Kompilátory |
|
---|
Knihovny |
|
---|
Zvláštnosti |
|
---|
Někteří potomci |
|
---|
C a další jazyky |
|
---|
Kategorie:C programovací jazyk |
Microsoft Research (MSR) |
---|
Hlavní projekty | |
---|
Laboratoře MSR | laboratoře | Aktuální |
|
---|
přerušeno |
- Deepfish
- seznamy
- Živá schránka
- Fotosyntéza
- Volta
|
---|
|
---|
Labs |
|
---|
Další divize |
|
---|
|
---|
Kategorie |
Bezplatný a otevřený software společnosti Microsoft |
---|
obecná informace |
|
---|
Software _ | Aplikace |
|
---|
Hry |
|
---|
Programovací jazyky |
|
---|
Rámce a vývojové nástroje |
|
---|
Operační systémy |
|
---|
jiný |
|
---|
|
---|
licence |
|
---|
související témata |
- .NET Foundation
- F-Sharp Software Foundation
- Microsoft Open Specification Promise
- Nadace Outercurve
|
---|
Kategorie |