Tento článek popisuje syntaxi jazyka C# . Popsaná syntaxe je plně kompatibilní se syntaxí jazyka C# v .Net Framework a Mono .
Identifikátor je název entity v kódu . Existuje standard pro pojmenování identifikátorů, které by se měly používat v kódu. ID může:
Identifikátor nemůže:
Klíčová slova jsou předdefinované rezervované identifikátory, které mají speciální syntaktický význam. Jazyk má dva typy klíčových slov – vyhrazená v jakékoli části kódu a kontextová. Slova prvního typu, například false nebo byte , lze použít pouze jako klíčová slova. Slova druhého typu, jako je slovo where , mají zvláštní význam pouze v určitém kontextu a lze je použít jako identifikátory mimo něj. [MSDN 1] Pokud stále potřebujete použít klíčové slovo jako identifikátor, musíte ho deklarovat s předponou @, například @byte . [MSDN 1]
Klíčová slova C# | |||
---|---|---|---|
abstraktní | tak jako | základna | bool |
přestávka | byte | případ | úlovek |
char | kontrolovány | třída | konst |
pokračovat | desetinný | výchozí | delegát |
dělat | dvojnásobek | jiný | enum |
událost | explicitní | externí | Nepravdivé |
Konečně | pevný | plovák | pro |
pro každého | jít do | -li | implicitní |
v [MSDN 2] | v (univerzální modifikátor) [MSDN 3] | int | rozhraní |
vnitřní | je | zámek | dlouho |
jmenný prostor | Nový | nula | objekt |
operátor | out [MSDN 4] | out (generický modifikátor) [MSDN 5] | přepsat |
parametry | soukromé | chráněný | veřejnost |
pouze ke čtení | ref | vrátit se | sbyte |
zapečetěno | krátký | velikost | stackalloc |
statický | tětiva | strukturovat | přepínač |
tento | házet | skutečný | Snaž se |
Typ | uint | ulong | nezaškrtnuté |
nebezpečný | ushort | použitím | virtuální |
prázdnota | nestálý | zatímco |
Kontextová klíčová slova C# | |||
---|---|---|---|
přidat | dynamický | z | dostat |
globální | skupina | do | připojit |
nechat | seřadit podle | částečný (typ) [MSDN 6] | částečná (metoda) [MSDN 7] |
odstranit | vybrat | soubor | hodnota |
var | kde (univerzální omezení
typ) [MSDN 8] |
kde (dotazová klauzule) [MSDN 9] | výtěžek |
Příklady:
řetězec @out ; //Chcete-li dát identifikátoru název shodný s klíčovým slovem, musíte použít @ prefix string identifier ; //C# podporuje Unicode a umožňuje pojmenování identifikátorů libovolným znakovým řetězcem Unicode var { get ; nastavit ;}; //Zde nemusíte používat předponu @. var – kontextové klíčové slovo public void function () { var s = "" ; //K tomu, aby kompilátor automaticky určil typ proměnné, se používá klíčové slovo var }Celá čísla | |
---|---|
Hexadecimální | 0xF5, 0x[0..9, A..F, a..f]+ |
Desetinná čísla | 245, [0..9]+ |
Čísla s pohyblivou řádovou čárkou | |
jediná přesnost | 23,5F, 23,5f; 1.72E3F, 1.72E3f, 1.72e3F, 1.72e3f |
dvojitá přesnost | 23,5, 23,5 D, 23,5 d; 1.72E3, 1.72E3D, ... |
Termíny | |
datum | Není podporováno |
Symboly | |
symbol | „a“, „Z“, „\u0231“ |
Struny | |
čára | "Ahoj světe" "C:\\Windows\\" , @"C:\Windows\" |
Únikové postavy [1] | |
Unicode znakový kód | \u následovaný kódem znaku |
znak tabulátoru | \t |
prostor | \b |
návrat vozíku | \r |
konec stránky | \F |
obrácené lomítko | \\ |
jediný citát | \' |
dvojitá citace | \" |
překlad řádků | \n |
Proměnná je identifikátor, který obsahuje nějakou hodnotu. Proměnná je definována typem a názvem a může být také inicializována, když je deklarována. Proměnné můžete deklarovat pouze uvnitř funkcí.
Oznámení proměnná int _ //Deklarace neinicializované proměnné typu celočíselné pojmenované proměnné Inicializace proměnná int _ //Deklarace neinicializované proměnné proměnné = 1 ; //Inicializace proměnné Deklarace a inicializace int proměnná = 1 ; //Současná deklarace a inicializace proměnnéMůžete deklarovat několik proměnných stejného typu najednou:
int a , b ; int a = 2 , b = 3 ; Implicitní typ Zavedeno v C# 3.0Pokud kompilátor dokáže určit typ proměnné při inicializaci, lze ji vynechat nahrazením klíčovým slovem var :
var chars = nový znak [] { 'A' , 'O' }; //převedeno kompilátorem na char[] chars = new char[] {'A', 'O'}; var čísla = new Seznam < int >(); //převedeno kompilátorem na List<int> čísla = new List<int>();viz také
Konstanta je identifikátor, který obsahuje hodnotu, kterou není dovoleno měnit během provádění programu. Konstanty jsou implicitně statické .
constLokální proměnnou nebo vlastnost s danou hodnotou lze deklarovat pomocí klíčového slova const , po kterém nelze její hodnotu změnit.
class Foo { const double PI = 3,1415 ; Foo () { const int countOfPlanets = 9 ; } } readonlyVlastnost deklarovaná klíčovým slovem jen pro čtení , jako konstanta, nelze po inicializaci změnit. Na rozdíl od pole s klíčovým slovem const jej však lze inicializovat v konstruktoru.
class Foo { readonly int a = 3 ; řetězec pouze pro čtení b ; pouze pro čtení StringBuilder builder ; Foo () { b = "String" ; builder = new StringBuilder (); } }Operátory {...}se používají k označení začátku a konce bloků kódu a také k označení rozsahu. Identifikátor deklarovaný ve složených závorkách je viditelný pouze v nich a ve vnořených oborech. Následující příklad ukazuje, jak funguje blok kódu a rozsahy:
void doSomething () { int a ; { int b ; a = 0 _ } a = 1_ _ b = 1 ; //Kompilátor zde vyvolá chybu, protože proměnná b je deklarována v rozsahu, který není pro tento kód přístupný. }Aplikace napsané v C# se skládají z tříd a jejich členů. Třídy a další typy jsou deklarovány uvnitř jmenných prostorů, stejně jako ostatní třídy.
jmenný prostor FooNamespace { class Foo { class IncludedClass { } } }Jmenný prostor je součástí názvu typu. Používá se k seskupování typů nebo k rozlišení mezi typy se stejným názvem, ale různými funkcemi.
Systém . I.O. _ DirectoryInfo //Class DirectoryInfo v oboru názvů IO, který je vnořen do oboru názvů SystemJmenný prostor je deklarován takto:
jmenný prostor Aplikace { //Členové jsou muži } Klíčové slovo usingPři použití třídy není nutné kvalifikovat její jmenný prostor, pokud je uveden v souboru .cs pomocí direktivy using. To je obvykle umístěno v horní části zdrojového souboru, ale může být umístěno i jinde, například v rámci třídy.
pomocí System ; pomocí System.Collections ;Direktiva také usingumožňuje vytvořit jmenný prostor nebo typové aliasy, například pokud je její název příliš dlouhý:
pomocí Net = System . síť ; pomocí DirInfo = System . I.O. _ DirectoryInfo ;Každá aplikace, ať už je to konzolová nebo grafická, musí mít vstupní bod. V aplikaci C# je tímto bodem metoda Main, která může mít pouze jednu instanci a musí být statická. Tato metoda nemusí vrátit hodnotu (klíčové slovo void):
static void Main ( string [] args ) { }...nebo vrátí celé číslo, které je kódem ukončení programu: pokud program skončil bez chyby, je tento kód 0.
static int Main ( string [] args ) { return 0 ; }Kategorie operátora | Operátoři |
---|---|
Aritmetický | + - * / % |
Boolean (booleovský a bitový) | & | ^ ! ~ && || |
Zřetězení řetězců | + |
zvýšit, snížit | ++ -- |
Posun | << >> |
Srovnání | == != < > <= >= |
Úkol | = += -= *= /= %= &= |= ^= <<= >>= |
Přístup k členům | . |
Indexování | [ ] |
Obsazení | ( ) |
Podmiňovací způsob | ? : |
Vytvořte objekt | new |
Typ Informace | as is sizeof typeof |
Kontrola přetečení | checked unchecked |
Práce s ukazateli | * -> [] & |
Někteří operátoři mohou být přetíženi. Chcete-li přetížit operátor, musíte definovat statickou funkci, jejíž název se skládá z klíčového slova operatora samotného operátoru. U unárních operátorů musí mít funkce jeden parametr, u binárních a porovnávacích operátorů dva. V obou případech musí být jeden z parametrů stejného typu jako třída nebo struktura, která jej deklarovala.
public static Foo operátor +( Foo foo , Bar bar ) { return new Foo ( foo . Value + bar . Value ); }Seznam přetížených operátorů:
Operátoři | |
---|---|
Unární operátory | + - ! ~ ++ -- true false |
Binární operátory | + - * / % & | ^ << >> |
Porovnávací operátory
lze přetížit pouze ve dvojicích |
== != < > <= >= |
viz také
Operátor přetypování nelze přetížit, můžete však definovat operátory explicitní konverze (typové přetypování) - explicitní a implicitní konverze - implicitní. Liší se tím, že implicitní konverzní operátory nesmí vyvolávat výjimky a musí zajistit zachování informací. [MSDN 10] . Pro explicitní převod musíte použít operátor ( ), pro implicitní nikoli.
Operátor implicitní konverze
Operátor explicitní konverze
Operátor asje operátor obsazení. Pokud je převod typu možný, operátor vrátí objekt zadaného typu, jinak vrátí null.
Streamový proud = Soubor . Otevřít ( @"C:\Temp\data.dat" ); FileStream fstream = stream jako FileStream ; // Vrátí objekt. String str = proud jako String ; // Selže a vrátí hodnotu null.Pokud je hodnota levé proměnné null, pak bude vrácena hodnota pravé proměnné, jinak bude vrácena hodnota levé proměnné.
Následující kód
vrátit ifNotNullValue ?? jinakHodnota ;ekvivalent
return ifNotNullValue == null ? jinakValue : ifNotNullValue ;C# | |
---|---|
Verze |
|
NA |
|
Příbuzný |