Ez a cikk a C# nyelv szintaxisát írja le . A leírt szintaxis teljes mértékben kompatibilis a .Net Framework és a Mono C# nyelv szintaxisával .
Az azonosító a kódban szereplő entitás neve . Az azonosítók elnevezésére létezik egy szabvány, amelyet a kódban kell használni. Az azonosító:
Az azonosító nem tud:
A kulcsszavak előre meghatározott lefoglalt azonosítók, amelyeknek különleges szintaktikai jelentése van. A nyelvnek kétféle kulcsszója van – a kód bármely részében fenntartott és kontextus szerinti. Az első típusú szavak, például false vagy byte , csak kulcsszóként használhatók. A második típusú szavak, mint például a where szó , csak bizonyos kontextusban bírnak különleges jelentéssel, és azon kívül is használhatók azonosítóként. [MSDN 1] Ha továbbra is azonosítóként kell használnia a kulcsszót, akkor azt @ előtaggal kell deklarálnia, például @byte . [MSDN 1]
Kulcsszavak C# | |||
---|---|---|---|
absztrakt | mint | bázis | bool |
szünet | byte | ügy | fogás |
char | ellenőrizve | osztály | const |
folytatni | decimális | alapértelmezett | küldött |
csináld | kettős | más | enum |
esemény | kifejezett | külső | hamis |
végül | rögzített | úszó | számára |
az egyes | menj | ha | beleértett |
[ MSDN 2] | in (univerzális módosító) [MSDN 3] | int | felület |
belső | van | zár | hosszú |
névtér | új | nulla | tárgy |
operátor | ki [MSDN 4] | out (általános módosító) [MSDN 5] | felülbírálni |
params | magán | védett | nyilvános |
csak olvasható | ref | Visszatérés | sbyte |
zárt | rövid | mérete | stackalloc |
statikus | húr | struct | kapcsoló |
ez | dobás | igaz | próbálja meg |
típusú | uint | ulong | ellenőrizetlen |
nem biztonságos | short | segítségével | virtuális |
üres | illó | míg |
Kontextusbeli kulcsszavak C# | |||
---|---|---|---|
add hozzá | dinamikus | tól től | kap |
globális | csoport | -ba | csatlakozik |
hagyja | Rendezés | részleges (típus) [MSDN 6] | részleges (módszer) [MSDN 7] |
távolítsa el | válassza ki | készlet | érték |
var | ahol (univerzális megkötés
típus) [MSDN 8] |
ahol (lekérdezési záradék) [MSDN 9] | hozam |
Példák:
string @out ; //Ha egy azonosítónak egy kulcsszóval azonos nevet szeretne adni, akkor a @ előtag karakterlánc azonosítóját kell használnia ; //C# támogatja a Unicode kódot, és lehetővé teszi az azonosítók elnevezését tetszőleges Unicode karakterlánccal var { get ; set ;}; //Itt nem szükséges a @ előtag használata. var - kontextus kulcsszó public void function () { var s = "" ; //Ahhoz, hogy a fordító automatikusan meghatározza a változó típusát, a var kulcsszót használja }Egész számok | |
---|---|
Hexadecimális | 0xF5, 0x[0..9, A..F, a..f]+ |
Tizedesjegyek | 245, [0..9]+ |
Lebegőpontos számok | |
egyetlen pontosság | 23,5F, 23,5f; 1,72E3F, 1,72E3f, 1,72e3F, 1,72e3f |
dupla pontosság | 23,5, 23,5 d, 23,5 d; 1.72E3, 1.72E3D, ... |
Dátumok | |
dátum | Nem támogatott |
Szimbólumok | |
szimbólum | „a”, „Z”, „\u0231” |
Húrok | |
vonal | "Hello, world" "C:\\Windows\\" , @"C:\Windows\" |
Escape karakterek [1] | |
Unicode karakterkód | \u karakterkód követi |
tabulátor karakter | \t |
tér | \b |
kocsi vissza | \r |
oldaltörés | \f |
fordított perjel | \\ |
egyetlen idézet | \' |
kettős idézet | \" |
soros fordítás | \n |
A változó egy azonosító, amely valamilyen értéket tartalmaz. A változókat típus és név határozza meg, és deklarálásakor inicializálható is. Csak függvényeken belül deklarálhat változókat.
Hirdetmény int változó _ //Változó nevű inicializálatlan egész típusú változó deklarálása Inicializálás int változó _ //Inicializálatlan változóváltozó deklarálása = 1 ; //Változó inicializálása Deklaráció és inicializálás int változó = 1 ; //Változó egyidejű deklarálása és inicializálásaEgyszerre több azonos típusú változót is deklarálhatunk:
int a , b ; int a = 2 , b = 3 ; Implicit típus Bevezetve a C# 3.0 -banHa a fordító az inicializáláskor meg tudja határozni a változó típusát, akkor ez kihagyható, ha a var kulcsszóra cseréli :
var chars = új karakter [] { 'A' , 'O' }; //fordító által char[]-ra konvertálva chars = new char[] {'A', 'O'}; var számok = new Lista < int >(); //a fordító átalakította List<int> számokká = new List<int>();Lásd még
A konstans olyan azonosító, amely olyan értéket tartalmaz, amely nem módosítható a program végrehajtása során. A konstansok implicit módon statikusak .
constAdott értékű lokális változó vagy tulajdonság a const kulcsszóval deklarálható , ami után az értéke nem módosítható.
class Foo { const double PI = 3,1415 ; Foo () { const int countOfPlanets = 9 ; } } readonlyA csak olvasható kulcsszóval deklarált tulajdonság , mint egy konstans, inicializálás után nem módosítható. A const kulcsszóval rendelkező mezőkkel ellentétben azonban konstruktorban inicializálható.
class Foo { csak olvasható int a = 3 ; csak olvasható karakterlánc b ; csak olvasható StringBuilder építő ; Foo () { b = "Karakterlánc" ; builder = új StringBuilder (); } }Az operátorok {...}a kódblokkok elejét és végét, valamint a hatókör jelzését szolgálják. A kapcsos zárójelekben deklarált azonosító csak azokon belül és beágyazott hatókörökben látható. A következő példa bemutatja, hogyan működik egy kódblokk és hatókör:
void doSomething () { int a ; { int b ; a = 0_ _ } a = 1_ _ b = 1 ; //A fordító itt hibát fog dobni, mert a b változó olyan hatókörben van deklarálva, amely nem elérhető ennek a kódnak. }A C# nyelven írt pályázatok osztályokból és azok tagjaiból épülnek fel. Az osztályok és más típusok a névtereken belül deklaráltak, valamint más osztályok.
névtér FooNamespace { class Foo { class IncludedClass { } } }A névtér a típusnév része. A típusok csoportosítására vagy az azonos nevű, de eltérő funkciójú típusok megkülönböztetésére szolgál.
Rendszer . I.O._ _ DirectoryInfo //Class DirectoryInfo az IO névtérben, amely a System névtérbe van beágyazvaA névtér a következőképpen van deklarálva:
névtér Alkalmazás { //A tagok férfiak } Kulcsszó usingOsztály használatakor nem szükséges a névterét minősíteni, ha a .cs fájlban a using direktívával van megadva. Ez általában a forrásfájl tetejére kerül, de máshol is elhelyezhető, például egy osztályon belül.
a rendszer használatával ; a System.Collections használatával ;Ezenkívül az irányelv usinglehetővé teszi névterek létrehozását vagy álnevek beírását, például ha a neve túl hosszú:
a Net = System használatával . háló ; a DirInfo = System használatával . I.O._ _ DirectoryInfo ;Minden alkalmazásnak, legyen az konzolos vagy grafikus, rendelkeznie kell belépési ponttal. Egy C#-alkalmazásban ez a pont a metódus Main, amelynek csak egy példánya lehet, és statikusnak kell lennie. Előfordulhat, hogy ez a módszer nem ad vissza értéket (kulcsszó void):
static void Main ( string [ ] args ) { }...vagy adjon vissza egy egész számot, amely a program kilépési kódja: ha a program hiba nélkül kilépett, ez a kód 0.
static int Main ( string [ ] args ) { return 0 ; }Üzemeltetői kategória | Üzemeltetők |
---|---|
Számtan | + - * / % |
Logikai (logikai és bitenkénti) | & | ^ ! ~ && || |
Karakterlánc összefűzése | + |
növekedés, csökkenés | ++ -- |
Váltás | << >> |
Összehasonlítás | == != < > <= >= |
Feladat | = += -= *= /= %= &= |= ^= <<= >>= |
Hozzáférés a tagokhoz | . |
Indexelés | [ ] |
Öntvény | ( ) |
Feltételes | ? : |
Hozzon létre egy objektumot | new |
Írja be az Információt | as is sizeof typeof |
Túlcsordulás ellenőrzése | checked unchecked |
Munka mutatókkal | * -> [] & |
Néhány kezelő túlterhelt lehet. Egy operátor túlterheléséhez meg kell határoznia egy statikus függvényt, amelynek neve egy kulcsszóból operatorés magából az operátorból áll. Unáris operátorok esetén a függvénynek egy paraméterrel kell rendelkeznie, bináris és összehasonlító operátorok esetén kettő. Mindkét esetben az egyik paraméternek ugyanolyan típusúnak kell lennie, mint az azt deklaráló osztály vagy struktúra.
public static Foo operátor +( Foo foo , Bar bar ) { return new Foo ( foo . Value + bar . Value ); }A túlterhelt operátorok listája:
Üzemeltetők | |
---|---|
Unáris operátorok | + - ! ~ ++ -- true false |
Bináris operátorok | + - * / % & | ^ << >> |
Összehasonlító operátorok
csak párban lehet túlterhelni |
== != < > <= >= |
Lásd még
A cast operátort nem lehet túlterhelni, azonban definiálhatunk explicit konverziós (type casting) operátorokat - explicit és implicit konverzió - implicit. Abban különböznek egymástól, hogy az implicit konverziós operátoroknak nem szabad kivételt tenniük, és biztosítaniuk kell az információk megőrzését. [MSDN 10] . Explicit konverzióhoz az operátort kell használni ( ), implicit konverzióhoz nem.
Implicit konverziós operátor
Explicit konverziós operátor
Az operátor asöntött operátor. Ha lehetséges a típuskonverzió, akkor az operátor a megadott típusú objektumot adja vissza, ellenkező esetben a null.
Stream stream = Fájl . Megnyitás ( @"C:\Temp\data.dat" ); FileStream fstream = adatfolyam FileStreamként ; _ // Egy objektumot ad vissza. String str = stream mint String ; //Nem működik, és nullát ad vissza.Ha a bal oldali változó értéke null, akkor a jobb oldali változó értéke, ellenkező esetben a bal oldali változó értéke.
Következő kód
return ifNotNullValue ?? egyébkéntValue ;egyenértékű
return ifNotNullValue == null ? elseValue : ifNotNullValue ;C# | |
---|---|
Verziók |
|
TOVÁBB |
|
Összefüggő |