Sintaxa limbajului C Sharp

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 2 februarie 2017; verificările necesită 11 modificări .

Acest articol descrie sintaxa limbajului C# . Sintaxa descrisă este pe deplin compatibilă cu sintaxa limbajului C# din .Net Framework și Mono .

Bazele

Identificatori

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:

Cuvinte cheie

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 }

Literale

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

Variabile

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 variabile

Puteți declara mai multe variabile de același tip simultan:

int a , b ; int a = 2 , b = 3 ; Tip implicit Introdus în C# 3.0

Dacă 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

Constante

O constantă este un identificator care conține o valoare care nu poate fi schimbată în timpul execuției programului. Constantele sunt implicit statice .

const

O 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 ; } } readonly

O 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 (); } }

Blocuri de cod

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. }

Structura programului

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ții de nume

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 System

Spațiul de nume este declarat astfel:

namespace Aplicație { //Membrii sunt bărbați } Cuvânt cheie using

Câ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 ;

Metoda Main

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 ; }

Operatori

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 * -> [] &

Supraîncărcarea operatorului

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

== != < > <= >=
  • Operatorii de atribuire ( +=, *=și alții) nu pot fi supraîncărcați, dar sunt o combinație a operatorului ( =) și unul dintre operatorii binari, iar operatorii binari pot fi supraîncărcați.
  • Operatorul de turnare ( ( )) nu poate fi supraîncărcat, dar puteți defini noi operatori de conversie folosind explicit și implicit.
  • Operatorul de indexare a matricei ( [ ]) nu poate fi supraîncărcat, dar pot fi definiți noi indexatori.

Vezi si

Operatori de conversie și turnare

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ă

class Foo { public string Valoare ; operator public static implicit Foo ( string value ) { return new Foo ( value ) } } } // Conversie implicită Foo foo = "Exemplu" ;

Operator de conversie explicită

class Foo { public string Valoare ; operator public static explicit Foo ( string value ) { if ( value . IsNullOrEmpty ()) throw new ArgumentException ( "Șirul nu poate fi nul sau gol!" ); return new Foo ( value ) } } // Conversie explicită Foo foo = ( Foo ) „Exemplu” ; Foo fooNull = ( Foo ) "" ; //Eroare Operator as

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.

Operator ??

Introdus în C# 2.0

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 ;

Note

Articole pe MSDN
  1. 1 2 Cuvinte cheie C# . Consultat la 4 ianuarie 2011. Arhivat din original la 13 decembrie 2010.
  2. pentru fiecare, în . Consultat la 4 ianuarie 2011. Arhivat din original la 13 decembrie 2010.
  3. în (modificator universal) . Preluat la 4 ianuarie 2011. Arhivat din original la 5 august 2010.
  4. Modificatorul parametrului Out . Consultat la 4 ianuarie 2011. Arhivat din original pe 15 decembrie 2010.
  5. out (modificator universal) . Consultat la 4 ianuarie 2011. Arhivat din original pe 15 decembrie 2010.
  6. Partajat (tip) . Consultat la 4 ianuarie 2011. Arhivat din original pe 15 decembrie 2010.
  7. Partajat (metodă) . Consultat la 4 ianuarie 2011. Arhivat din original pe 15 decembrie 2010.
  8. unde (constrângere de tip generic) . Consultat la 4 ianuarie 2011. Arhivat din original pe 15 decembrie 2010.
  9. unde clauza . Consultat la 4 ianuarie 2011. Arhivat din original pe 15 decembrie 2010.
  10. implicit . Preluat la 6 ianuarie 2011. Arhivat din original la 3 aprilie 2011.
Diverse
  1. Ce secvențe de evadare de caractere sunt disponibile? . Consultat la 4 ianuarie 2011. Arhivat din original pe 28 mai 2010.