Acest articol descrie sintaxa limbajului C# . Sintaxa descrisă este pe deplin compatibilă cu sintaxa limbajului C# din .Net Framework și Mono .
Identificatorul este numele entității din cod . Există un standard pentru denumirea identificatorilor care ar trebui să fie utilizați în cod. ID-ul poate:
Un identificator nu poate:
Cuvintele cheie sunt identificatori rezervați predefiniti care au un sens sintactic special. Limbajul are două tipuri de cuvinte cheie - rezervate în orice parte a codului și contextuale. Cuvintele de primul tip, cum ar fi false sau octet , pot fi folosite numai ca cuvinte cheie. Cuvintele de al doilea tip, cum ar fi cuvântul unde , au o semnificație specială numai într-un anumit context și pot fi folosite ca identificatori în afara acestuia. [MSDN 1] Dacă tot trebuie să utilizați cuvântul cheie ca identificator, trebuie să îl declarați cu un prefix @, cum ar fi @byte . [MSDN 1]
Cuvinte cheie C# | |||
---|---|---|---|
abstract | la fel de | baza | bool |
pauză | octet | caz | captură |
char | verificat | clasă | const |
continua | zecimal | Mod implicit | delega |
do | dubla | altfel | enumerare |
eveniment | explicit | extern | fals |
in cele din urma | fix | pluti | pentru |
pentru fiecare | mergi la | dacă | implicit |
în [MSDN 2] | în (modificator universal) [MSDN 3] | int | interfata |
intern | este | Lacăt | lung |
spatiu de nume | nou | nul | obiect |
operator | out [MSDN 4] | out (modificator generic) [MSDN 5] | trece peste |
parametrii | privat | protejat | public |
numai citire | ref | întoarcere | sbyte |
sigilat | mic de statura | dimensiunea | stackalloc |
static | şir | struct | intrerupator |
acest | arunca | Adevărat | încerca |
tip de | uint | ulong | nebifate |
nesigure | scurt | folosind | virtual |
gol | volatil | in timp ce |
Cuvinte cheie context C# | |||
---|---|---|---|
adăuga | dinamic | din | obține |
global | grup | în | a te alatura |
lăsa | comanda de | parțial (tip) [MSDN 6] | parțial (metodă) [MSDN 7] |
elimina | Selectați | a stabilit | valoare |
var | unde (constrângere universală
tip) [MSDN 8] |
unde (clauza de interogare) [MSDN 9] | Randament |
Exemple:
șir @out ; //Pentru a da unui identificator un nume identic cu un cuvânt cheie, trebuie să utilizați identificatorul șirului de prefix @ ; //C# acceptă Unicode și permite identificatorii să fie denumiti cu orice șir de caractere Unicode var { get ; setați ;}; //Nu trebuie să utilizați prefixul @ aici. var - cuvânt cheie context public void function () { var s = "" ; //Pentru ca compilatorul să determine automat tipul unei variabile, se folosește cuvântul cheie var }numere întregi | |
---|---|
hexazecimal | 0xF5, 0x[0..9, A..F, a..f]+ |
zecimale | 245, [0..9]+ |
Numere în virgulă mobilă | |
precizie unică | 23,5F, 23,5f; 1.72E3F, 1.72E3f, 1.72e3F, 1.72e3f |
precizie dubla | 23,5, 23,5D, 23,5d; 1.72E3, 1.72E3D, ... |
Datele | |
data | Nu sunt acceptate |
Simboluri | |
simbol | „a”, „Z”, „\u0231” |
Siruri de caractere | |
linia | „Bună ziua, lume” „C:\\Windows\\” , @”C:\Windows\” |
Escape caractere [1] | |
Cod de caractere Unicode | \u urmat de codul caracterului |
caracterul tabulatorului | \t |
spaţiu | \b |
retur transport | \r |
pauză de pagină | \f |
backslash | \\ |
ghilimele unice | \' |
citat dublu | \" |
traducere de linie | \n |
O variabilă este un identificator care conține o anumită valoare. O variabilă este definită printr-un tip și un nume și poate fi inițializată și atunci când este declarată. Puteți declara variabile numai în interiorul funcțiilor.
Anunț variabila int _ //Declarația unei variabile de tip întreg neinițializată numită variabilă Inițializare variabila int _ //Declarația unei variabile variabile neinițializate = 1 ; //Inițializare variabilă Declarație și inițializare variabila int = 1 ; //Declararea și inițializarea simultană a unei variabilePuteți declara mai multe variabile de același tip simultan:
int a , b ; int a = 2 , b = 3 ; Tip implicit Introdus în C# 3.0Dacă compilatorul poate determina tipul variabilei la inițializare, aceasta poate fi omisă prin înlocuirea acesteia cu cuvântul cheie var :
var caractere = new char [] { 'A' , 'O' }; //convertit de compilator în char[] chars = new char[] {'A', 'O'}; var numere = new List < int >(); //convertit de compilator în List<int> numere = new List<int>();Vezi si
O constantă este un identificator care conține o valoare care nu poate fi schimbată în timpul execuției programului. Constantele sunt implicit statice .
constO variabilă locală sau o proprietate cu o valoare dată poate fi declarată cu cuvântul cheie const , după care valoarea acesteia nu poate fi modificată.
clasa Foo { const dublu PI = 3,1415 ; Foo () { const int countOfPlanets = 9 ; } } readonlyO proprietate declarată cu cuvântul cheie readonly , ca o constantă, nu poate fi modificată după inițializare. Totuși, spre deosebire de un câmp cu cuvântul cheie const, acesta poate fi inițializat într-un constructor.
class Foo { readonly int a = 3 ; șir de caractere b ; readonly StringBuilder builder ; Foo () { b = „Șir” ; builder = new StringBuilder (); } }Operatorii {...}sunt utilizați pentru a marca începutul și sfârșitul blocurilor de cod, precum și pentru a indica domeniul de aplicare. Un identificator declarat în acolade este vizibil numai în interiorul lor și în domenii imbricate. Următorul exemplu demonstrează cum funcționează un bloc de cod și domenii:
void doSomething () { int a ; { int b ; a = 0 _ } a = 1 _ b = 1 ; //Compilatorul va arunca o eroare aici, deoarece variabila b este declarată într-un domeniu care nu este accesibil acestui cod. }Aplicațiile scrise în C# sunt formate din clase și membrii acestora. Clasele și alte tipuri sunt declarate în interiorul spațiilor de nume, precum și în alte clase.
namespace FooNamespace { class Foo { class IncludedClass { } } }Spațiul de nume face parte din numele tipului. Folosit pentru a grupa tipuri sau pentru a distinge tipurile cu același nume, dar cu funcții diferite.
Sistem . I.O. _ DirectoryInfo //Class DirectoryInfo în spațiul de nume IO, care este imbricat în spațiul de nume SystemSpațiul de nume este declarat astfel:
namespace Aplicație { //Membrii sunt bărbați } Cuvânt cheie usingCând utilizați o clasă, nu este necesar să-i calificați spațiul de nume dacă este specificat în fișierul .cs folosind directiva using. Acesta este de obicei plasat în partea de sus a fișierului sursă, dar poate fi plasat în altă parte, cum ar fi într-o clasă.
folosind System ; folosind System.Collections ;De asemenea, directiva usingvă permite să creați spații de nume sau aliasuri de tip, de exemplu, dacă numele său este prea lung:
folosind Net = System . net ; folosind DirInfo = System . I.O. _ DirectoryInfo ;Orice aplicație, fie că este consolă sau grafică, trebuie să aibă un punct de intrare. Într-o aplicație C#, acest punct este metoda Main, care poate avea o singură instanță și trebuie să fie statică. Este posibil ca această metodă să nu returneze o valoare (cuvânt cheie void):
static void Main ( șir [] args ) { }...sau returnează un număr întreg care este codul de ieșire al programului: dacă programul a ieșit fără eroare, acest cod este 0.
static int Main ( șir [] args ) { return 0 ; }Categoria operatorului | Operatori |
---|---|
Aritmetic | + - * / % |
Boolean (boolean și pe biți) | & | ^ ! ~ && || |
Concatenarea șirurilor | + |
crestere, decrementare | ++ -- |
Schimb | << >> |
Comparaţie | == != < > <= >= |
Misiune | = += -= *= /= %= &= |= ^= <<= >>= |
Acces la membri | . |
Indexarea | [ ] |
Distribuție | ( ) |
Condiţional | ? : |
Creați un obiect | new |
Tip Informații | as is sizeof typeof |
Verificarea preaplinului | checked unchecked |
Lucrul cu pointerii | * -> [] & |
Unii operatori pot fi supraîncărcați. Pentru a supraîncărca un operator, trebuie să definiți o funcție statică al cărei nume constă dintr-un cuvânt cheie operatorși operatorul însuși. Pentru operatorii unari, funcția trebuie să aibă un parametru, pentru operatorii binari și de comparație, doi. În ambele cazuri, unul dintre parametri trebuie să fie de același tip cu clasa sau structura care l-a declarat.
public static operator Foo +( Foo foo , Bar bar ) { return new Foo ( foo . Value + bar . Value ); }Lista operatorilor supraîncărcați:
Operatori | |
---|---|
Operatori unari | + - ! ~ ++ -- true false |
Operatori binari | + - * / % & | ^ << >> |
Operatori de comparație
poate fi supraîncărcat doar în perechi |
== != < > <= >= |
Vezi si
Operatorul de turnare nu poate fi supraîncărcat, totuși, puteți defini operatori de conversie explicită (de tip casting) - conversie explicită și implicită - implicită. Ele diferă prin aceea că operatorii de conversie implicită nu trebuie să facă excepții și trebuie să se asigure că informațiile sunt păstrate. [MSDN 10] . Pentru o conversie explicită, trebuie să utilizați operatorul ( ), pentru una implicită, nu.
Operator de conversie implicită
Operator de conversie explicită
Operatorul aseste un operator turnat. Dacă o conversie de tip este posibilă, operatorul va returna un obiect de tipul specificat, în caz contrar va returna null.
Flux de flux = Fișier . Deschideți ( @"C:\Temp\data.dat" ); FileStream fstream = flux ca FileStream ; // Va returna un obiect. String str = flux ca String ; //Va eșua și va returna null.Dacă valoarea variabilei din stânga este nulă, atunci valoarea variabilei din dreapta va fi returnată, în caz contrar valoarea variabilei din stânga va fi returnată.
Următorul cod
return ifNotNullValue ?? otherwiseValue ;echivalent
return ifNotNullValue == null ? otherwiseValue : ifNotNullValue ;C# | |
---|---|
Versiuni |
|
PE |
|
Legate de |