C Sharp -kielen syntaksi

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 2. helmikuuta 2017 tarkistetusta versiosta . tarkastukset vaativat 11 muokkausta .

Tässä artikkelissa kuvataan C # -kielen syntaksi . Kuvattu syntaksi on täysin yhteensopiva C#-kielen syntaksin kanssa .Net Frameworkissa ja Mono .

Perusteet

Tunnisteet

Tunniste on koodissa olevan entiteetin  nimi . Tunnisteiden nimeämiselle on olemassa standardi, jota tulee käyttää koodissa. Tunnus voi:

Tunniste ei voi:

Avainsanat

Avainsanat ovat ennalta määritettyjä varattuja tunnisteita, joilla on erityinen syntaktinen merkitys. Kielessä on kahden tyyppisiä avainsanoja - varattu mihin tahansa koodin osaan ja asiayhteyteen. Ensimmäisen tyypin sanoja, kuten false tai byte , voidaan käyttää vain avainsanoina. Toisen tyypin sanoilla, kuten sanalla where , on erityinen merkitys vain tietyssä kontekstissa, ja niitä voidaan käyttää tunnisteina sen ulkopuolella. [MSDN 1] Jos sinun on silti käytettävä avainsanaa tunnisteena, sinun on ilmoitettava se @-etuliitteellä, kuten @byte . [MSDN 1]

Avainsanat C#
abstrakti kuten pohja bool
tauko tavu tapaus ottaa kiinni
hiiltyä tarkistettu luokkaa konst
jatkaa desimaali oletuksena delegoida
tehdä kaksinkertainen muu enum
tapahtuma selkeää ulkoinen väärä
vihdoinkin korjattu kellua varten
jokaiselle mene jos implisiittinen
[MSDN 2] :ssa in (yleinen muuntaja) ​​[MSDN 3] int käyttöliittymä
sisäinen On Lukko pitkä
nimiavaruus Uusi tyhjä esine
operaattori ulos [MSDN 4] ulos (yleinen muuntaja) [MSDN 5] ohittaa
parametrit yksityinen suojattu julkinen
Lue ainoastaan viite palata sbyte
sinetöity lyhyt koko stackalloc
staattinen merkkijono struct vaihtaa
Tämä heittää totta yrittää
tyyppi uint ulong valitsematon
turvaton kehotus käyttämällä virtuaalinen
mitätön haihtuvia sillä aikaa  
Kontekstiavainsanat C#
lisätä dynaaminen alkaen saada
maailmanlaajuisesti ryhmä sisään liittyä seuraan
päästää tilata mennessä osittainen (tyyppi) [MSDN 6] osittainen (menetelmä) [MSDN 7]
Poista valitse aseta arvo
var missä (yleinen rajoitus

tyyppi) [MSDN 8]

missä (kyselylauseke) [MSDN 9] tuotto

Esimerkkejä:

merkkijono @out ; //Jos haluat antaa tunnisteelle avainsanalle identtisen nimen, sinun on käytettävä @ -etuliitemerkkijonotunnistetta ; //C# tukee Unicodea ja sallii tunnisteiden nimeämisen millä tahansa Unicode -merkkijonolla var { get ; asettaa ;}; //Sinun ei tarvitse käyttää @-etuliitettä tässä. var - kontekstiavainsana public void function () { var s = "" ; //Jotta kääntäjä määrittää automaattisesti muuttujan tyypin, käytetään avainsanaa var }

Literaalit

Kokonaisluvut
Heksadesimaali 0xF5, 0x[0..9, A..F, a..f]+
Desimaalit 245, [0..9]+
Liukulukuluvut
yksittäinen tarkkuus 23,5F, 23,5f; 1.72E3F, 1.72E3f, 1.72e3F, 1.72e3f
kaksinkertainen tarkkuus 23,5, 23,5D, 23,5d; 1.72E3, 1.72E3D, ...
Päivämäärät
päivämäärä Ei tueta
Symbolit
symboli 'a', 'Z', '\u0231'
jouset
linja "Hei, maailma"
"C:\\Windows\\" , @"C:\Windows\"
Escape-hahmot [1]
Unicode- merkkikoodi \u ja merkkikoodi
välilehtimerkki _ \t
tilaa \b
vaunun paluu \r
sivunvaihto \f
kenoviiva \\
yksi lainaus \'
kaksoislainaus \"
rivin käännös \n

Muuttujat

Muuttuja on tunniste, joka sisältää jonkin arvon. Muuttujan määrittelee tyyppi ja nimi, ja se voidaan myös alustaa, kun se ilmoitetaan. Voit ilmoittaa muuttujia vain funktioiden sisällä.

Ilmoitus int muuttuja _ //Alustamattoman kokonaislukutyyppisen muuttujan, jonka nimi on muuttuja, ilmoitus Alustus int muuttuja _ //Alustamattoman muuttujamuuttujan ilmoitus = 1 ; //Muuttujan alustus Ilmoitus ja alustus int muuttuja = 1 ; //Samanaikainen ilmoitus ja muuttujan alustus

Voit ilmoittaa useita samantyyppisiä muuttujia kerralla:

int a , b ; int a = 2 , b = 3 ; Implisiittinen tyyppi Esitelty C# 3.0 :ssa

Jos kääntäjä pystyy määrittämään muuttujan tyypin alustuksen yhteydessä, se voidaan jättää pois korvaamalla se avainsanalla var  :

var chars = uusi merkki [] { 'A' , 'O' }; //kääntäjä muuntaa muotoon char[] chars = uusi merkki[] {'A', 'O'}; var numerot = uusi Lista < int >(); //kääntäjä muuntaa List<int> numeroiksi = new List<int>();

Katso myös

Vakiot

Vakio on tunniste, joka sisältää arvon, jota ei saa muuttaa ohjelman suorituksen aikana. Vakiot ovat implisiittisesti staattisia .

const

Paikallinen muuttuja tai ominaisuus tietyllä arvolla voidaan ilmoittaa const - avainsanalla , jonka jälkeen sen arvoa ei voi muuttaa.

luokka Foo { const double PI = 3,1415 ; Foo () { const int countOfPlanets = 9 ; } } readonly

Vain luku -avainsanalla ilmoitettua ominaisuutta , kuten vakiota, ei voi muuttaa alustuksen jälkeen. Toisin kuin kenttä, jossa on avainsana const, se voidaan kuitenkin alustaa rakentajassa.

class Foo { vain luku int a = 3 ; vain luku -merkkijono b ; vain luku StringBuilder builder ; Foo () { b = "merkkijono" ; rakentaja = uusi StringBuilder (); } }

Koodilohkot

Operaattoreita {...}käytetään merkitsemään koodilohkojen alkua ja loppua sekä osoittamaan laajuus. Aaltosulkeiden sisällä ilmoitettu tunniste näkyy vain niiden sisällä ja sisäkkäisissä laajuuksissa. Seuraava esimerkki osoittaa, kuinka koodilohko ja laajuudet toimivat:

void doSomething () { int a ; { int b ; a = 0_ _ } a = 1_ _ b = 1 ; //Kääntäjä antaa tähän virheen, koska muuttuja b on ilmoitettu alueella, joka ei ole tämän koodin käytettävissä. }

Ohjelman rakenne

C#-kielellä kirjoitetut hakemukset koostuvat luokista ja niiden jäsenistä. Luokat ja muut tyypit ilmoitetaan nimiavaruuksissa, kuten myös muissa luokissa.

nimiavaruus FooNimitila { luokka Foo { luokka SisällytettyLuokka { } } }

Nimiavaruudet

Nimiavaruus on osa tyypin nimeä. Käytetään ryhmittelemään tyyppejä tai erottamaan tyypit, joilla on sama nimi mutta eri toiminnot.

Järjestelmä . I.O._ _ DirectoryInfo //Class DirectoryInfo IO-nimiavaruudessa, joka on sisäkkäinen System-nimiavaruudessa

Nimiavaruus on ilmoitettu seuraavasti:

nimiavaruus Sovellus { //Jäsenet ovat miehiä } Avainsana using

Luokkaa käytettäessä sen nimiavaruutta ei tarvitse tarkentaa, jos se on määritetty .cs-tiedostossa using-ohjeella. Tämä sijoitetaan yleensä lähdetiedoston yläosaan, mutta se voidaan sijoittaa muualle, kuten luokkaan.

käyttäen System ; käyttämällä System.Collections -ohjelmaa ;

Lisäksi direktiivi usingantaa sinun luoda nimiavaruuden tai kirjoittaa aliaksia esimerkiksi, jos sen nimi on liian pitkä:

käyttäen Net = System . netto ; käyttäen DirInfo = System . I.O._ _ DirectoryInfo ;

Menetelmä Main

Jokaisella sovelluksella, olipa se sitten konsoli tai graafinen, on oltava sisääntulopiste. C#-sovelluksessa tämä piste on menetelmä Main, jolla voi olla vain yksi esiintymä ja sen on oltava staattinen. Tämä menetelmä ei välttämättä palauta arvoa (avainsana void):

static void Main ( merkkijono [] args ) { }

...tai palauta kokonaisluku, joka on ohjelman poistumiskoodi: jos ohjelma poistui ilman virhettä, tämä koodi on 0.

static int Main ( merkkijono [ ] args ) { return 0 ; }

Operaattorit

Operaattoriluokka Operaattorit
Aritmeettinen + - * /  %
Boolean (looginen ja bittikohtainen) & | ^  ! ~ && ||
Merkkijonojen ketjutus +
lisäys, vähennys ++ --
Siirtää << >>
Vertailu ==  != < > <= >=
Tehtävä = += -= *= /=  %= &= |= ^= <<= >>=
Pääsy jäsenille .
Indeksointi [ ]
Heittää ( )
Ehdollinen ?  :
Luo objekti new
Kirjoita tiedot as is sizeof typeof
Ylivuototarkastus checked unchecked
Työskentely osoittimien kanssa * -> [] &

Operaattorin ylikuormitus

Jotkut operaattorit voivat olla ylikuormitettuja. Operaattorin ylikuormittamiseksi sinun on määritettävä staattinen funktio, jonka nimi koostuu avainsanasta operatorja itse operaattorista. Unaarioperaattoreille funktiolla on oltava yksi parametri, binääri- ja vertailuoperaattoreille kaksi. Molemmissa tapauksissa yhden parametrin on oltava samaa tyyppiä kuin sen ilmoittanut luokka tai rakenne.

public static Foo- operaattori +( Foo foo , Bar bar ) { return new Foo ( foo . Value + bar . Value ); }

Luettelo ylikuormitetuista operaattoreista:

Operaattorit
Unaariset operaattorit + - ! ~ ++ -- true false
Binäärioperaattorit + - * / % & | ^ << >>
Vertailuoperaattorit

voidaan ylikuormittaa vain pareittain

== != < > <= >=
  • Tehtäväoperaattoreita ( +=, *=ja muita) ei voi ylikuormittaa, mutta ne ovat yhdistelmä operaattorista ( =) ja yhdestä binäärioperaattoreista, ja binäärioperaattoreita voidaan ylikuormittaa.
  • Cast-operaattoria ( ( )) ei voi ylikuormittaa, mutta voit määrittää uusia muunnosoperaattoreita käyttämällä eksplisiittistä ja implisiittistä.
  • Taulukon indeksointioperaattoria ( [ ]) ei voi ylikuormittaa, mutta uusia indeksoijia voidaan määrittää.

Katso myös

Muunnos- ja cast-operaattorit

Cast-operaattoria ei voi ylikuormittaa, mutta voit määrittää eksplisiittisiä muunnosoperaattoreita (type casting) - eksplisiittinen ja implisiittinen muunnos - implisiittinen. Ne eroavat toisistaan ​​siinä, että implisiittiset muunnosoperaattorit eivät saa tehdä poikkeuksia ja niiden on varmistettava, että tiedot säilyvät. [MSDN 10] . Eksplisiittisessä muunnoksessa sinun on käytettävä operaattoria ( ), implisiittisen muunnoksen yhteydessä ei.

Implisiittinen muunnosoperaattori

class Foo { julkinen merkkijono Arvo ; julkinen staattinen implisiittinen operaattori Foo ( merkkijono arvo ) { return new Foo ( arvo ) } } //Implicitinen muunnos Foo foo = "Esimerkki" ;

Selkeä muunnosoperaattori

class Foo { julkinen merkkijono Arvo ; public staattinen eksplisiittinen operaattori Foo ( merkkijono arvo ) { if ( arvo . IsNullOrEmpty ( )) throw new ArgumentException ( " Merkkijono ei voi olla tyhjä tai tyhjä!" ); return new Foo ( arvo ) } } // Eksplisiittinen muunnos Foo foo = ( Foo ) "Esimerkki" ; Foo fooNull = ( Foo ) "" ; //Virhe Operaattori as

Operaattori ason cast-operaattori. Jos tyypin muuntaminen on mahdollista, operaattori palauttaa määritetyn tyypin objektin, muuten se palauttaa null.

Stream stream = Tiedosto . Avaa ( @"C:\Temp\data.dat" ); FileStream fstream = suoratoisto tiedostona ; _ // Palauttaa objektin. String str = stream kuten String ; //Epäonnistuu ja palauttaa nollan.

Operaattori ??

Esitelty C# 2.0 :ssa

Jos vasemman muuttujan arvo on nolla, niin oikeanpuoleisen muuttujan arvo palautetaan, muuten palautetaan vasemman muuttujan arvo.

Seuraava koodi

palauttaa ifNotNullValue ?? muutenValue ;

vastaava

palauttaa ifNotNullValue == null ? muutenArvo : ifNotNullValue ;

Muistiinpanot

Artikkelit MSDN:stä
  1. 1 2 Avainsanat C# . Haettu 4. tammikuuta 2011. Arkistoitu alkuperäisestä 13. joulukuuta 2010.
  2. foreach, in . Haettu 4. tammikuuta 2011. Arkistoitu alkuperäisestä 13. joulukuuta 2010.
  3. in (yleinen muuntaja) . Haettu 4. tammikuuta 2011. Arkistoitu alkuperäisestä 5. elokuuta 2010.
  4. Out-parametrin muuntaja . Haettu 4. tammikuuta 2011. Arkistoitu alkuperäisestä 15. joulukuuta 2010.
  5. ulos (yleinen modifikaattori) . Haettu 4. tammikuuta 2011. Arkistoitu alkuperäisestä 15. joulukuuta 2010.
  6. Jaettu (tyyppi) . Haettu 4. tammikuuta 2011. Arkistoitu alkuperäisestä 15. joulukuuta 2010.
  7. Jaettu (menetelmä) . Haettu 4. tammikuuta 2011. Arkistoitu alkuperäisestä 15. joulukuuta 2010.
  8. missä (yleinen tyyppirajoitus) . Haettu 4. tammikuuta 2011. Arkistoitu alkuperäisestä 15. joulukuuta 2010.
  9. missä lauseke . Haettu 4. tammikuuta 2011. Arkistoitu alkuperäisestä 15. joulukuuta 2010.
  10. implisiittinen . Haettu 6. tammikuuta 2011. Arkistoitu alkuperäisestä 3. huhtikuuta 2011.
Muut
  1. Mitä merkkijonoja on saatavilla? . Haettu 4. tammikuuta 2011. Arkistoitu alkuperäisestä 28. toukokuuta 2010.