C # -opetusohjelma: Perusteet, jotka sinun on hallittava C #



Tämä artikkeli C # -oppaasta auttaa sinua saamaan yksityiskohtaisen tiedon C # -perusteista sekä reaaliaikaisia ​​esimerkkejä ymmärryksen parantamiseksi.

C # on monikäyttöinen ja vankka ohjelmointikieli, jonka Microsoft Corporation on kehittänyt vuonna 2000 tappavaksi kilpailijaksi Java: lle. Se on suosituin ja hallitseva ohjelmointikieli sekä verkkokehityksessä että työpöytäsovellusten kehittämisessä.

Tässä C # -oppaassa opimme seuraavat käsitteet.





C # Perusteet

Johdatus C # -ohjelmointikieleen

90-luvun alussa Java oli johtava ohjelmointikieli web-kehityksessä, työpöytäsovellusten kehittämisessä ja monilla muilla aloilla. Microsoft halusi keksiä kilpailijan, jolla on monia edistyneitä ominaisuuksia, jotka voivat jättää Java kauas taakse.



C#-Tutorial-hejlsberg_bio

Se oli vuonna 2000, Anders Hejlsberg ja hänen Microsoft-tiiminsä keksi idean C #: sta, jota kutsutaan yleisesti nimellä C-Sharp. Kansainvälinen standardointijärjestö hyväksyi tämän aloitteen (ISO) ja Euroopan tietokonevalmistajien liitto (ECMA). ja lopuksi, C # tulee ohjelmistokehityksen maailmaan.

C # -ohjelmointikielen ominaisuudet



  • Kohdekeskeinen ohjelmointikieli

Objektisuuntautunut ohjelmointitapa on se, mikä tekee C # -terävästä olevan ohjelmoijaystävällisin ja helpoin kehittää ja ylläpitää ohjelmointikieliä.

  • Tyyppikohtainen kieli

Type-Safe tarkoittaa, että kääntäjälle annetaan pääsy vain muistipaikkaan, jolla on lupa suorittaa. Tämä ominaisuus parantaa koodin turvallisuutta eksponentiaaliselle tasolle.

  • Yhteentoimivuus

Yhteentoimivuuden ominaisuus tekee C #: sta riittävän kykenevän tekemään kaiken, mikä on kotoisin C ++: sta, tehokkaammin, mikä voi ylittää C ++: n.

  • Rikas kirjasto

C # tarjoaa pääsyn useisiin sisäänrakennettuihin kirjastoihin, jotka tarjoavat esiohjelmoituja toimintoja vähentääkseen kehitysprosessissa käytettyä aikaa.

  • Skaalautuva ja päivitettävä

C # on suunniteltu ylivoimaiseksi muiden ohjelmointikielien joukossa. Siksi se on aina avoin päivityksille ja pitää itsensä erittäin skaalautuvana ominaisuuksillaan.

  • Komponenttisuuntainen

Microsoftin kehittäjät käyttivät komponenttipohjaista lähestymistapaa C #: n kehittämiseen. Tämä on tärkein kehitysmenetelmä C #: n pitämiseksi erittäin skaalautuvana ja päivitettynä.

  • Jäsennelty kieli

Strukturoidun ohjelmoinnin lähestymistapa on suositeltava ohjelmistokehityksen elinkaaren aikana, kun ohjelmiston kokoaminen ja käyttöönotto on helppoa kehittää kuin toimintapainotteinen ohjelmointitapa.

  • Nopeasti

C # -ohjelmointi tapahtuu satunnaisesti nopeammin kokoamisessa ja suorituksessa verrattuna C ++: iin ja muihin ohjelmointikieliin.

Asennus

Se on todistettu Microsoft Visual Studio on luokan C Editorin paras editori. Asennamme ja asennamme Microsoft Visual Studion suorittamaan C # -ohjelmamme suorittamalla seuraavat vaiheet:

Vaihe 1 : Lataa Microsoft Visual Studio

Google viimeisin versio Visual Studiosta ja lataa Asentaa tiedosto paikalliseen järjestelmään ja sitten juosta asennustiedosto kuten järjestelmänvalvoja.

Vaihe 2: Valitse .NET Desktop Development Package

Kun olet suorittanut Installer-ohjelman, Visual Studio Editor ladataan onnistuneesti paikalliseen järjestelmääsi, myöhemmin työpöydän näyttöön tulee valintaikkuna, jossa kysytään tietyn paketin tarvitset järjestelmässäsi. Täällä sinun on valittava .NET-työpöydän kehitys paketti.

Vaihe 3: Aseta C # Environment

Kun paketit .NET-kehitys on ladattu, sitten näyttöön tulee toinen valintaikkuna, jossa pyydetään etsimääsi kehitysympäristöä. Täällä sinun täytyy valitse ympäristö C #: lle.

Vaihe 4: Luo ensimmäinen projekti

Kun ympäristö on asetettu, olet kaikki hyvä mennä. Käynnistä Visual Studio ja valitse luoda uusi projekti valintaikkunassa.

Sinut ohjataan seuraavaan valintaikkunaan ja sinun on valittava luokan kirjasto nimellä .NET-standardi kuten alla.

Seuraavassa valintaikkunassa sinua pyydetään Määritä projekti . Määritä se ja olet nyt Editorissa. Kirjoita ensimmäinen ohjelma ja juosta se. Tulos näkyy onnistuneesti Komentokehote.

käyttämällä System-luokkaa Edureka {static void Main (string [] args) {Console.WriteLine ('Tervetuloa Edurekaan!, Hyvää oppimista ..!')}}

// Tuotos:

Suoritetaan ensimmäinen C # -ohjelmamme.

C # -ohjelman rakenne

Nyt kun olemme suorittaneet ensimmäisen C # -ohjelmamme, ymmärrämme sen rakenne yksityiskohtaisesti. Yksinkertaisessa C # -ohjelmassa on seuraavat osat.

käyttämällä järjestelmän nimitilaa ConsoleApplication1 {public class Edureka {public static void Main (string [] args) {Console.WriteLine ('Tervetuloa Edurekaan !, Hyvää oppimista ..!')}}}

// Tuotos:

Tervetuloa Edurekaan !, Hyvää oppimista ..!

on git ja github sama
  • luokka: luokka voidaan yleisesti määritellä a avainsana jota käytetään luokan määrittämiseen C # -ohjelmassa.
  • Edureka: Se on Luokka. Luokkaa pidetään usein suunnitelmana, joka tallentaa luokkaan liittyvät jäsenet ja menetelmät.
  • Tärkeimmät: Pohjimmiltaan on ensisijainen menetelmä koko C # -ohjelmasta, Se toimii yhdyskäytävänä ohjaukselle päästäksesi ohjelmaan. Se suoritetaan ennen minkään muun ohjelman suorittamista.
  • mitätön: Tämä koodin segmentti on nimetty palautustyyppi menetelmän. Se voi olla mikä tahansa muu tietotyyppi kuin mitätön. Tarpeettomuus tarkoittaa, että menetelmällä ei ole mitään tietoja, jotka palautetaan siitä.
  • staattinen: Tämä on avainsana mikä sanoo, että ilmoitetut datajäsenet ovat staattisia ja ilmoitetuille jäsenille on varattu oma muisti.
  • String [] väittää: Se muistuttaa komentoriviargumentteja, joita käytämme ohjelmassa. Kun suoritamme ohjelmamme, läpäisemme periaatteessa jotkut argumentit, jotka ohjelma hyväksyy tämän lausunnon vuoksi.
  • System.Console.WriteLine ('Tervetuloa Edurekaan !, Hyvää oppimista ..!') Tässä, Järjestelmä on nimitila. Konsolion, että luokka on esitettyJärjestelmän nimitilassa. WriteLine () onko sestaattinentekniikkakonsolistaluokka, jota käytetään alaskirjaamiseentekstin konsolissa.

Opettele nyt C #: ssä saatavilla olevat tietotyypit.

Tietotyypit

C #: n tietotyypit on jaettu kolmeen luokkaan.

Arvotietotyypit

Arvotietotyypit sijaitsevat System.ValueType Kirjasto ja ovat aina valmiita käytettäväksi suoraan, ja muuttujat voidaan määrittää suoraan tietylle arvolle. Arvotietotyypit luokitellaan edelleen kahteen tyyppiin, kuten alla on esitetty:

  • Ennalta määritetyt tietotyypit
  • Käyttäjän määrittelemät tietotyypit

Ennalta määritetyt tietotyypit: Näitä käytämme normaalisti päivittäisessä ohjelmoinnissamme. Kielikehittäjät määrittelevät nämä tietotyypit ennalta ja pitävät ne valmiina ohjelmoijille.

Esimerkki:

int, float, char, lyhyt kaksinkertainen jne

Käyttäjän määrittelemät tietotyypit: On tilanteita, joissa meidän on ehkä tallennettava eri tietotyyppien arvot yhteen muuttujaan. Näissä tapauksissa Ennalta määritetyt tietotyypit eivät riitä. Käyttäjän määrittelemä Tietotyypit ovat kuin käyttäjän muokattavissa olevia tietotyyppejä.

Esimerkki: Rakenne, Enum

Tietotyyppi Varatun muistin alue Muistin koko
allekirjoitettu merkki -128-127 1 tavu
allekirjoittamaton merkki 0 - 127 1 tavu
hiiltyä -128-127 1 tavu
allekirjoitettu lyhyeksi -32 768 - 32 767 2 tavua
allekirjoittamaton lyhyt 0 - 65 535 2 tavua
lyhyt -32 768 - 32 767 2 tavua
allekirjoitettu kansainvälinen -2,147,483,648 - -2,147,483,647 4 tavua
allekirjoittamaton int 0 - 4 294 967 295 4 tavua
int -2,147,483,648 - -2,147,483,647 4 tavua
allekirjoitettu pitkään -9,223,372,036,854,775,808 - 9,223,372,036,854,775,807 8 tavua
allekirjoittamaton pitkä 0 - 18 446 744 073 709 551 615 8 tavua
pitkä -9,223,372,036,854,775,808 - 9,223,372,036,854,775,807 8 tavua
kellua 1,5 * 10-45 - 3,4 * 1038, (7-numeroinen tarkkuus) 4 tavua
kaksinkertainen 5,0 * 10-324 - 1,7 * 10308, (15-numeroinen tarkkuus) 8 tavua
desimaali -7,9 * 10-28 - 7,9 * 1028, (28-numeroinen tarkkuus) 16 tavua


Osoittimen tietotyyppi

Osoittimen tyyppi on yksinkertainen tietotyyppi. Sen toiminnot ovat täysin samanlaisia ​​kuin C: n osoittimet. Ne on suunniteltu tallentamaan toisen osoittimen osoite.

kellua * ptr

Viitetietotyypit

Nimi on itsestään selvä. Viitetietotyypit eivät todellakaan tallenna muuttujia, vaan ne tallentavat viitearvon kyseiselle muuttujalle. Toisin sanoen, ne tallentavat todellisen muuttujan osoitteen.

Viitemuuttujat luokitellaan kolmeen seuraavaan tyyppiin:

  • Kohteen tyyppi

Objektin tietotyyppi on käytettävissä Järjestelmä Objekti Luokka.Objektityypitvoi ollaosoitettuarvotmuut tyypit,viitetyypit, ennalta määritelty, käyttäjän määrittelemätyypit. Mutta ennentehtäväarvoja, se vaatii tyyppi muuntaminen.

object abc abc = 50 // tätä kutsutaan nyrkkeilyksi
  • Dynaaminen tyyppi

Dynaamisen tyypin muuttujat on suunniteltu tallentamaan lähes kaiken tyyppisiä arvoja. Sitä kutsutaan dynaamiseksi tyypiksi, koska arvojen tyyppitarkistus tapahtuu ajon aikana

dynaaminen x = 10
  • Merkkijonotyyppi

Merkkijonotyyppi on saatavana kielellä Järjestelmä luokassa. Merkkijonotyyppi on suunniteltu merkkijono-literaalien tallentamiseen. Jousisoiton literaalit tallennetaan kahteen muotoonkahdessa muodossa

    • lainattu
    • @ quote.
Merkkijono S = 'Edureka'
  • @ quote merkkijono kirjaimellinen näyttää
@ 'Edureka'

Ymmärretään nyt muuttujat.

Muuttujat

Muuttujat ovat muistipaikalle osoitettuja nimiä, jotka tallentavat tiettyjä käyttäjän antamia tietoja ja jotka ovat helposti käytettävissä muuttujan nimen avulla. C # -mallissa on viisi muuttujatyyppiä

Tyyppi Esimerkki
Tyhjä Nollatiedot
Boolen Tosi ja väärä
Kokonaisluku Int, Char, tavu, lyhyt, pitkä
Kellua Kelluva ja kaksinkertainen
Desimaali Desimaali

Esimerkki:

int a, b kaksinkertainen x kelluva p char abc

Säännöt, joita noudatetaan muuttujien ilmoittamiseksi C #: ssa

  • Muuttuja voi sisältää aakkosia, numeroita ja alaviivoja.
  • Muuttujan nimi voi alkaa vain aakkosilla tai alaviivoilla.
  • Muuttujat eivät voi alkaa numerolla tai erikoismerkillä.
  • Muuttujan nimen välissä ei saa olla välilyöntejä.
  • Varattuja avainsanoja ei saa käyttää muuttujien niminä.

Operaattorit

Operaattori voidaan määritellä erityissymboliksi, joka selittää tietokoneen suorittamaan tietyn matemaattisen ovat looginen operaatio muuttujien joukossa. C # sisältää useita operaattoreita, jotka on mainittu alla.

  • Aritmeettiset operaattorit
  • Suhteelliset operaattorit
  • Loogiset operaattorit
  • Bit-operaattorit
  • Tehtäväoperaattorit

Aritmeettiset operaattorit

Operaattori Esimerkki Kuvaus
+ A + B Lisää kaksi operandia
- A - B Vähentää kaksi operandia
* A * B Moninkertaistaa kaksi operandia
/ A / B Jakaa kaksi operandia
% A% B Loput kahdesta operandista
++ A ++ Lisäkäyttö
- TO- Vähennyskäyttö

Suhteelliset operaattorit

Operaattori Esimerkki Kuvaus
== A == B Tosi, jos molemmat operandit ovat samat, muuten väärä
! = A! = B Tosi, jos molemmat operandit eivät ole samat, muu väärä
> A> B Tosi, jos A on suurempi, muu väärä
< TO Tosi, jos B on suurempi, muu väärä
> = A> = B Tosi, jos A on suurempi tai yhtä suuri, muu väärä
<= TO<= B Tosi, tunnus B on yhtä suuri, muu väärä

Loogiset operaattorit

Operaattori Esimerkki Kuvaus
&& A && B Tosi, jos molemmat operandit ovat totta, muu väärä
|| A || B Tosi, jos joku operandeista on totta, muuten väärä
! A! B Kääntää operandin loogisen tilan

Bit-operaattorit

TO B A & B A | B A ^ B
yksi yksi yksi yksi 0
yksi 0 0 yksi yksi
0 yksi 0 yksi yksi
0 0 0 0 0
Operaattori Esimerkki Kuvaus
~ (~ A) Binaarisen yhden komplementtioperaattori on epätavallinen ja sillä on merkitys ”kääntämisessä”.
<< TO<<2 Binaarinen vasemman vaiheen operaattori. Vasemman operandin arvo siirretään vasemmalle oikean operandin määrittämällä bittimäärä.
>> A >> 2 Binaarinen oikean vaiheen operaattori. Vasemman operandin arvoa siirretään oikealle oikean operandin määrittämällä bittimäärä.

Tehtäväoperaattorit

Operaattori Esimerkki Kuvaus
= A = B + C A = B + C, B + C on osoitettu A: lle
+ = A + = B A = A + B, A + B on osoitettu A: lle
- = A - = B A = A-B, A-B on osoitettu A: lle
* = A - = B A = A * B, A * B on osoitettu A: lle
/ = A / = B A = A / B, A / B on osoitettu A: lle
% = A% = B A = A% B,% B on osoitettu A: lle
<<= TO<<= 2 Vasen vaihto-operaattori
>> = A >> = 2 Oikea vaihto-operaattori
& = A & = 2 Bittisuuntainen ja määritysoperaattori
^ = A ^ = 2 Bittikohtainen yksinomainen ja toimeksiantaja
| = A! = 2 Bitwise Inclusive ja tehtävänoperaattori

Silmukat

TO silmukka -lauseketta käytetään lausejoukon suorittamiseen toistuvasti, kunnes tietty ehto täyttyy. C # -kieli koostuu seuraavista silmukka-lauseista.

  • Loopille
  • Vaikka silmukka
  • Tee silmukan aikana

Loopille

silmukalle käytetään tietyn koodisegmentin suorittamiseen useita kertoja, kunnes annettu ehto täyttyy.

Syntaksi

for (alustusolosuhteen lisäys / vähennys) {// koodisegmentti}

Vuokaavio:

Esimerkki:

käyttämällä järjestelmän julkista luokkaa ForExample {public static void Main (string [] args) {for (int i = 1 i<= 5 i++) { Console.WriteLine(i) } } } 

// Tuotos:

yksi
2
3
4
5

Vaikka silmukka

Vaikka silmukka käytetään koodisegmentin suorittamiseen useita kertoja, kunnes tietty ehto täyttyy.

Syntaksi

while (ehto) {// suoritettava koodi}

Vuokaavio:

Esimerkki:

käyttämällä järjestelmän nimitilaa Silmukat {luokkaohjelma {staattinen void Main (merkkijono [] args) {int x = 5 kun (x<= 10) { Console.WriteLine('The value of a: {0}', x) x++ } Console.ReadLine() } } } 

// Tuotos:

A: n arvo: 5
A: n arvo: 6
A: n arvo: 7
A: n arvo: 8
A-arvon arvo: 9
A-arvon arvo: 10

Tee silmukan aikana

Do while -silmukka on täysin samanlainen kuin While Loop, mutta ainoa ero on, että ehto sijoitetaan silmukan loppuun. Siksi silmukka suoritetaan ainakin kerran.

Syntaksi

tee {// koodi suoritettavaksi} while (ehto)

Vuokaavio:

Esimerkki:

käyttämällä järjestelmän nimiavaruutta Edureka {class DoWhileLoop {public static void Main (string [] args) {int i = 1, n = 5, product do {product = n * i Console.WriteLine ('{0} * {1} = { 2} ', n, i, tuote) i ++} kun (i<= 10) } } } 

// Tuotos:

5 * 1 = 5
5 * 2 = 10
5 * 3 = 15
5 * 4 = 20
5 * 5 = 25
5 * 6 = 30
5 * 7 = 35
5 * 8 = 40
5 * 9 = 45
5 * 10 = 50

Ehdollinen

Ehdolliset lausunnot käytetään suorittamiseen lausunto tai niiden ryhmä lausunnot perustuu johonkin ehtoon. Jos kunto on totta silloin C # -lausekkeet muuten teloitetaan seuraavaksi lausunto teloitetaan.

Eri tyyppiset ehdolliset lausunnot C ++ -kielellä ovat seuraavat:

  1. Jos lausunto
  2. If-Else-lause
  3. Sisäkkäinen If-else-lause
  4. If-Muu If tikkaat
  5. Vaihda lause

Jos lausunto

Yksi jos lausetta C # -kielellä käytetään koodin suorittamiseen, jos ehto on totta. Sitä kutsutaan myös yksisuuntaiseksi valintalausekkeeksi.

Syntaksi

jos (looginen lauseke) {// käskyt suoritetaan, jos looginen lauseke on tosi}

Vuokaavio:

Esimerkki:

Käyttämällä järjestelmän nimiavaruutta Ehdollinen {class IfStatement {public static void Main (string [] args) {int numero = 2 if (numero<5) { Console.WriteLine('{0} is less than 5', number) } Console.WriteLine('This statement is always executed.') } } } 

// Tuotos:

2 on alle 5
Tämä lause suoritetaan aina.

If-Else-lause

tai muuten lausetta C-kielellä käytetään koodin suorittamiseen, jos ehto on tosi tai väärä. Sitä kutsutaan myös kaksisuuntaiseksi valintalausekkeeksi.

Syntaksi

jos (looginen lauseke) {// käskyt suoritetaan, jos looginen lauseke on tosi} muut {// käskyt suoritetaan, jos looginen lauseke on väärä}

Vuokaavio:

Esimerkki:

Käyttämällä järjestelmän nimiavaruutta Ehdollinen {class IfElseStatement {public static void Main (string [] args) {int number = 12 if (number<5) { Console.WriteLine('{0} is less than 5', number) } else { Console.WriteLine('{0} is greater than or equal to 5', number) } Console.WriteLine('This statement is always executed.') } } } 

// Tuotos:

12 on suurempi tai yhtä suuri kuin 5
Tämä lause suoritetaan aina.

Sisäkkäinen If-else-lause

Sisäkkäiset tai muuten -lauseketta käytetään, kun ohjelma vaatii useamman kuin yhden testilausekkeen. Sitä kutsutaan myös monisuuntaiseksi valintalausekkeeksi. Kun lausekkeeseen liittyy joukko päätöksiä, käytämme tai muuten lausunto sisäkkäisessä muodossa.

Syntaksi

if (looginen lauseke) {if (sisäkkäinen-lauseke-1) {// suoritettava koodi} muu {// suoritettava koodi}} muu {jos (sisäkkäinen-lauseke-2) {// suoritettava koodi } muu {// suoritettava koodi}}

Vuokaavio:

Esimerkki:

käyttäen järjestelmän nimiavaruutta Ehdollinen {luokka Sisäkkäin {public static void Main (merkkijono [] args) {int ensin = 7, toinen = -23, kolmas = 13 if (ensimmäinen & gt sekunti) {if (ensimmäinen

// Tuotos:

13 on suurin

Muuten, jos tikkaat

jos-muu-jos -lauseketta käytetään yhden koodin suorittamiseen useista ehdoista. Sitä kutsutaan myös monireittiseksi päätöslauselmaksi. Se on if..else-lauseiden ketju, jossa jokainen if-lause liittyy muuhun if-lauseeseen ja viimeinen olisi muu lause.

Syntaksi

if (ehto1) {// suoritettava koodi, jos ehto1 on tosi} muu jos (ehto2) {// suoritettava koodi, jos ehto2 on tosi} muu jos (ehto3) {// suoritettava koodi, jos ehto3 on tosi} ... else {// suoritettava koodi, jos kaikki ehdot ovat vääriä}

Vuokaavio:

Esimerkki:

käyttämällä System-luokkaa Edureka {public static void Main (String [] args) {int i = 20 if (i == 10) Console.WriteLine ('i is 10') else if (i == 15) Console.WriteLine (' i on 15 ') else if (i == 20) Console.WriteLine (' i on 20 ') else Console.WriteLine (' i ei ole läsnä ')}}

// Tuotos:

i on 20

Vaihda lause

Vaihtaa lause toimii korvikkeena pitkille if-else-if tikkaille, joita käytetään tapausten luettelon testaamiseen. Kytkinlauseke sisältää yhden tai useampia tapausetikettejä, jotka testataan kytkinlausekkeen suhteen. Kun lauseke vastaa tapausta, siihen liittyvät lausekkeet suoritetaan.

Syntaksi

kytkin (muuttuja / lauseke) {tapausarvo1: // Lausekkeet suoritetaan, jos lauseke (tai muuttuja) = arvo1 murto-tapauksen arvo2: // Lausekkeet suoritetaan, jos lauseke (tai muuttuja) = arvo1 rikkoo ... ... ... . ... ... oletus: // Lausunnot suoritetaan, jos mikään tapaus ei täsmää}

Vuokaavio:

Esimerkki:

käyttämällä järjestelmän nimiavaruutta Ehdollinen {class SwitchCase {public static void Main (string [] args) {char ch Console.WriteLine ('Kirjoita aakkoset') ch = Convert.ToChar (Console.ReadLine ()) -kytkin (Char.ToLower (ch )) {tapaus 'a': Console.WriteLine ('vokaali') -katkotapa 'e': Console.WriteLine ('vokaali') -katkotapa 'i': Console.WriteLine ('vokaali') -katkotapa 'o': Console.WriteLine ('Vowel') -katkotapa 'u': Console.WriteLine ('Vowel') -katkos oletus: Console.WriteLine ('Ei vokaali') -tauko}}}}

// Tuotos:

Kirjoita aakkoset
On
Vokaali

Jouset

Merkkijono Tietotyyppi on verkkotunnuksen jäsen Järjestelmä Luokka. Se pystyy tallentamaan merkityypin tietoja. Voimme suorittaa erilaisia ​​toimintoja kuten Stingsketjutus, vertailu, alimerkkien saaminen, haku, leikkaus, korvaaminen ja paljon muuta.

Jousen ja merkkijonon analogia

C #: ssä Merkkijono ja merkkijono ovat vastaavia. Sana merkkijono on a avainsana ja toimii Järjestelmä luokassa. Voimme käyttää kumpaakin versiota merkkijonojen julistamiseen.

Syntaksi:

merkkijono s1 = 'Edureka' // merkkijonon luominen merkkijonoavainsanalla String s2 = 'onnellinen oppiminen' // merkkijonon luominen merkkijonoluokalla

Esimerkki:

käyttämällä järjestelmän julkista luokkaa StringExample {public static void Main (string [] args) {string s1 = 'Edureka' char [] ch = {'C', 's', 'h', 'a', 'r', ' p ',' ',' T ',' u ',' t ',' o ',' r ',' i ',' a ',' l '} merkkijono s2 = uusi merkkijono (ch) Console.WriteLine ( s1) Console.WriteLine (s2)}}

// Tuotos:

Edureka
Csharp-opetusohjelma

Jousimenetelmät C #: ssä

Menetelmä Kuvaus
Klooni() Käytetään palauttamaan viittaus tähän merkkijonon esiintymään.
Vertaa (merkkijono, merkkijono) Käytetään kahden määritetyn merkkijono-objektin vertaamiseen.
Concat (kielet, kielet) Liitä kaksi määritettyä merkkijonon esiintymää.
Sisältää (merkkijono) Palauttaa arvon, joka osoittaa määritetyn alimerkkijonon
Kopioi (merkkijono) Käytetään uuden merkkijonon esiintymän luomiseen samalla arvolla
Kopioi (Int, Char [], Int, Int) Kopioi merkit määritetystä sijainnista
Yhtä (merkkijono, merkkijono) Määrittää, että kahdella merkkijono-objektilla on sama arvo.
Muoto (merkkijono, objekti) Korvaa yksi tai useampi muotoilukohde määritetyssä merkkijonossa
IndexOf (merkkijono) Ilmoittaa ensimmäisen esiintymisen nollapohjaisen indeksin
Lisää (Int32, merkkijono) Palauttaa uuden merkkijonon, johon merkkijono lisätään hakemistoon.
IsInterned (merkkijono) Osoittaa, että tämä merkkijono on Unicode-normalisointimuodossa C.
IsNullOrEmpty (merkkijono) Osoittaa, että määritetty merkkijono on tyhjä tai tyhjä merkkijono.
IsNullOrWhiteSpace (merkkijono) Käytetään osoittamaan, onko määritetty merkkijono tyhjä, tyhjä,
Liity (merkkijono, jono []) Käytetään ketjuryhmän kaikkien elementtien ketjutukseen
LastIndexOf (Char) Ilmoittaa viimeisen merkin nollapohjaisen indeksin sijainnin
LastIndexOfAny (Char []) Ilmoittaa viimeisen merkin nollapohjaisen indeksin sijainnin
Poista (Int32) Palauttaa uuden merkkijonon, jossa kaikki merkit
Korvaa (merkkijono, merkkijono) Palauttaa uuden merkkijonon, jossa kaikki merkkijonon esiintymät
Jaettu (Char []) Sitä käytetään merkkijonon jakamiseen alimerkkijonoiksi
StartsWith (merkkijono) Sitä käytetään tarkistamaan, onko tämän merkkijonon alku
Substring (Int32) Sitä käytetään hakemaan alimerkkijonoa tästä instanssista.
ToCharArray () Kopioi tämän esiintymän merkit Unicode-ryhmään.
ToString () Sitä käytetään palauttamaan merkkijono-esiintymä.
Trimmata() Leikkaa merkkijonon


Taulukot

Muiden ohjelmointikielien tapaan C #: llä on taulukoita. Taulukot ovat yksinkertaisia ​​tietorakenteita, jotka on suunniteltu tallentamaan sama tietotyyppi elementtejä vierekkäiseen muistipaikkaan.

C # tukee seuraavia taulukotyyppejä.

  • Yksiulotteinen taulukko
  • Moniulotteinen taulukko
  • Jagged Array

Yksiulotteinen taulukko

Single Dimensional Array tallentaa elementit yhden rivin muodossa.

Syntaksi

int [] arr = new int [5] // taulukon luominen

Esimerkki:

käyttäen System public class ArrayExample {public static void Main (string [] args) {int [] arr = new int [5] arr [0] = 10 arr [1] = 20 arr [2] = 30 arr [3] = 40 arr [4] = 50 for (int i = 0 i 

// Tuotos:

10
kaksikymmentä
30
40
viisikymmentä

Moniulotteinen taulukko

Moniulotteinen taulukko tallentaa elementtejä useiden ulottuvuuksien muodossa, kuten matriisi ja kuutio jne.

Syntaksi

int val = a [2,3]

Esimerkki:

käyttämällä järjestelmän nimiavaruutta ArrayApplication {class MyArray {static void Main (string [] args) {int [,] a = new int [5, 2] {{0, 0}, {1, 2}, {2, 4}, {3, 6}, {4, 8}} int i, j (i = 0 i<5 i++) { for (j = 0 j < 2 j++) { Console.WriteLine('a[{0},{1}] = {2}', i, j, a[i, j]) } } Console.ReadKey() } } } 

// Tuotos:

a [0,0] = 0
a [0,1] = 0
a [1,0] = 1
a [1,1] = 2
a [2,0] = 2
a [2,1] = 4
a [3,0] = 3
a [3,1] = 6
a [4,0] = 4
a [4,1] = 8

Jagged Array

Jagged Array on yksinkertaisesti matriisiryhmä.

Esimerkki:

käyttäen järjestelmän nimiavaruutta ArrayApplication {class MyArray {static void Main (string [] args) {int [] [] a = new int [] [] {new int [] {0,0}, new int [] {1,2 }, uusi int [] {2,4}, uusi int [] {3, 6}, uusi int [] {4, 8}} int i, j (i = 0 i<5 i++) { for (j = 0 j < 2 j++) { Console.WriteLine('a[{0}][{1}] = {2}', i, j, a[i][j]) } } Console.ReadKey() } } } 

// Tuotos:

a [0] [0] = 0
a [0] [1] = 0
a [1] [0] = 1
a [1] [1] = 2
a [2] [0] = 2
a [2] [1] = 4
a [3] [0] = 3
a [3] [1] = 6
a [4] [0] = 4
a [4] [1] = 8

Kokoelmat

Kokoelmaa voidaan yksinkertaisesti pitää ryhmänä esineitä, jotka on kerätty yhdessä, jotta joitain toimintoja voidaan soveltaa kerättyihin tietoihin. Kerrokselle mahdollisesti suoritetut toiminnot ovat,

  • tallentaa esine
  • päivitä objekti
  • Poista objekti
  • noutaa esine
  • hakuobjekti ja
  • lajittele objekti

Kokoelmien tyypit

Kokoelmissa on kolme erilaista mahdollisuutta. Kolme nimitilaa on mainittu alla:

  • Järjestelmä.Kokoelmat.Yleinen luokat
  • Järjestelmä. Kokoelmat luokat
  • System.Collections.Concurrent luokat

System.Collections.Generic-luokassa on seuraavat luokkien lajikkeet:

  • Lista
  • Pino
  • Jonottaa
  • LinkedList
  • HashSet
  • Lajiteltu: Aseta
  • Sanakirja
  • Lajiteltu sanakirja
  • LajiteltuLista

Järjestelmä. Kokoelmat luokkia pidetään vanhoina luokkina. ne sisältävät seuraavat luokat.

  • ArrayList
  • Pino
  • Jonottaa
  • Hashtable

System.Collections.Concurrent luokatnimitila tarjoaa luokat langattomille operaatioille. Useat säikeet eivät nyt aiheuta ongelmaa kokoelman kohteiden käytössä. tässä käytettävissä olevat luokat ovat

  • BlockingCollection
  • SamanaikainenLaukku
  • Samanaikainen pino
  • Samanaikainen jono
  • Samanaikainen sanakirja
  • Väliseinät
  • Väliseinät
  • OrderablePartitioner

Lista

lista katsotaan tietorakenteeksi, joka on käytettävissä System.Collection.Generics nimitila. Se voi tallentaa ja hakea elementtejä. Luettelo pystyy tallentamaan päällekkäisiä elementtejä.

Esimerkki:

käyttämällä järjestelmää käyttämällä System.Collections.Generic public class Edureka {public static void Main (string [] args) {var names = new List () names.Add ('Sandhya') names.Add ('Arun') names.Add ( 'Prashanth') -nimet. Lisää ('Kiran') foreach (muuttujan nimi nimissä) {Console.WriteLine (name)}}}

// Tuotos:

Sandhya
Juoksu
Prashanth
Kiran

Hash Set

C # HashSetluokka on usein tottunutmyymälä,ottaa mukaantaiLue komponentit. Seeitallentaa kopionkomponentit.sitä kehotetaankäyttää HashSet kategoriajossinulla onkauppaanyksinomaan erottuva komponentit . sen löytyy System.Collections.Generic nimiavaruudesta.

Esimerkki:

järjestelmän käyttäminen System.Collections.Generic public class Edureka {public static void Main (string [] args) {var names = new HashSet () names.Add ('Sunil') names.Add ('Amar') names.Add ( 'Pujari') -nimet. Lisää ('Imran') -nimet. Lisää ('karan') foreach (var-nimi nimissä) {Console.WriteLine (name)}}}

// Tuotos:

Sunil
Amar
Pujari
Imran
karan

Lajiteltu sarja

C # SortedSetluokka ovat usein tottuneetmyymälä, Poista tai lukea elementtejä . Se ylläpitää nousevaa järjestystä jaeitallentaa kopionelementtejä.se on nopeaakäyttää SortedSetkategoriajossinulla onkauppaan erottuva komponentit ja ylläpitää nousevaa järjestystä.senlöytyy System.Collections.Generic nimiavaruudesta.

Esimerkki:

järjestelmän käyttäminen System.Collections.Generic public class Edureka {public static void Main (string [] args) {var names = new SortedSet () names.Add ('Sanjay') names.Add ('Anuradha') names.Add ( 'Praveen') -nimet. Lisää ('Ravi') -nimet. Lisää ('Kajol') foreach (var-nimi nimissä) {Console.WriteLine (name)}}}

// Tuotos:

Anuradha
Kajol
Praveen
Ravi
Sanjay

Pino

pino on yksinkertainen kokoelma, joka seuraa REUNA tai ensimmäinen viimeinen toimenpide käsiteltäessä siihen tallennettuja elementtejä.

Esimerkki:

käyttämällä järjestelmää System.Collections.Generic public class Edureka {public static void Main (string [] args) {Stack names = new Stack () names.Push ('Chandan') names.Push ('Pooja') names.Push ( 'James') -nimet.Push ('Rajesh') -nimet.Push ('kumar') foreach (merkkijono nimissä) {Console.WriteLine (name)} Console.WriteLine ('Peek -elementti:' + nimet.Peek () ) Console.WriteLine ('Pop:' + nimet.Pop ()) Console.WriteLine ('Popin jälkeen Peek-elementti:' + nimet.Peek ())}}

// Tuotos:

kumar
Rajesh
James
Pooja
Chandan
Kurkistuselementti: kumar
Pop: kumar
Pop, Peek -elementin jälkeen: Rajesh

Jonottaa

Jono on täysin samanlainen kuin Stack, mutta ainoa ero on, että jono seuraa FIFO tai ensin sisään ja ensin ulos -periaate käsittelemällä siihen tallennettuja elementtejä.

Esimerkki:

käyttämällä järjestelmää System.Collections.Generic public class Edureka {public static void Main (string [] args) {Queue names = new Queue () names.Enqueue ('Srujan') names.Enqueue ('Prajat) names.Enqueue ( 'John') -nimet.Enqueue ('Raju') -nimet.Enqueue ('Hari') foreach (merkkijonon nimi nimissä) {Console.WriteLine (name)} Console.WriteLine ('Peek -elementti:' + nimet.Peek () ) Console.WriteLine ('Dequeue:' + nimet.Dequeue ()) Console.WriteLine ('Dequeuen jälkeen Peek-elementti:' + nimet.Peek ())}}

// Tuotos:

Srujan
Prajat
John
Raju
Päivä
Kurkistuselementti: Srujan
Dequeue: Srujan
Dequeuen jälkeen Peek-elementti: Prajat

Linkitetty luettelo

Linkitetty luettelo on dynaaminen muistikokoelma. Linkitetyn luettelon elementit tallennetaan hakemalla muistia kasasta ja tallentamalla elementit jatkuvassa järjestyksessä linkittämällä niiden osoitteet.

Esimerkki:

käyttämällä järjestelmää System.Collections.Generic public class Edureka {public static void Main (string [] args) {var names = new LinkedList () names.AddLast ('Rajat') names.AddLast ('Arun) names.AddLast ( 'Prakash') -nimet.AddLast ('jay') -nimet.AddFirst ('sai') foreach (var-nimi nimissä) {Console.WriteLine (name)}}}

// Tuotos:

sai
Rajat
Juoksu
Prakash
paskiainen

Sanakirja

Sanakirja kategoriakäyttääideahashtable. Se tallentaa arvotlähtökohtaavaimen. Se sisältääerottuvanäppäimiäyksinomaan. Tekijäapuaavain,me yksinkertaisestietsi taiottaa pois elementtejä.senlöytyy System.Collections.Generic nimiavaruudesta.

Esimerkki:

järjestelmän käyttäminen System.Collections.Generic public class Edureka {public static void Main (string [] args) {Dictionary names = new Dictionary () names.Add ('1', 'Shiva') names.Add ('2', 'Prasad') -nimet.Lisää ('3', 'Preetam') -nimiä.Lisää ('4', 'Roy') -nimiä.Lisää ('5', 'Akash') foreach (KeyValuePair kv nimissä) {Konsoli. WriteLine (kv.Key + '' + kv.Value)}}}

// Tuotos:

1 Shiva
2 Prasad
3 Preetam
4 Roy
5Akash

Lajiteltu sanakirja

Lajiteltu sanakirja kategoriakäyttäädesignhashtable. Se tallentaa arvotajatusavaimen. Se sisältääerottuvaavaimet ja ylläpitää nousevaa järjestystäajatusavaimen. Tekijäapuaavain,me yksinkertaisestietsi taiottaa pois elementtejä.senlöytyy System.Collections.Generic nimiavaruudesta.

Esimerkki:

käyttämällä järjestelmää System.Collections.Generic public class Edureka {public static void Main (string [] args) {SortedDictionary names = new SortedDictionary () names.Add ('1', 'Arun') names.Add ('4', 'Vishal') -nimet. Lisää ('5', 'Ramesh') -nimet. Lisää ('3', 'Vidya') -nimet. Lisää ('2', 'Pallavi') foreach (KeyValuePair kv nimissä) {Konsoli. WriteLine (kv.Key + '' + kv.Value)}}}

// Tuotos:

1 Shiva
2 Prasad
3 Preetam
4 Roy
5Akash

Lajiteltu luettelo

LajiteltuLista Onanjoukko avain / arvo-pareja. Se tallentaa arvotlähtökohtaavaimen. Lajiteltu luettelokategoriasisältääerottuvaavaimet ja ylläpitää nousevaa järjestystälähtökohtaavaimen. Tekijäapuaavain,pystymme yksinkertaisestietsi tai poistaelementtejä.senlöytyi Järjestelmä.Kokoelmat.Yleinen nimitila.

Esimerkki:

käyttämällä järjestelmää System.Collections.Generic public class Edureka {public static void Main (string [] args) {SortedDictionary names = new SortedDictionary () names.Add ('1', 'Arun') names.Add ('4', 'Vishal') -nimet. Lisää ('5', 'Ramesh') -nimet. Lisää ('3', 'Vidya') -nimet. Lisää ('2', 'Pallavi') foreach (KeyValuePair kv nimissä) {Konsoli. WriteLine (kv.Key + '' + kv.Value)}}}

// Tuotos:

1 Arun
2 Pallavi
3 Vidya
4 Vishal
5Ramesh

Rakenne

Rakenne on käyttäjän määrittelemä tietotyyppi, joka on suunniteltu tallentamaan useita tietotyypin elementtejä. Rakenne ilmoitetaan avainsanalla rakenne.

Esimerkki:

käyttäen System struct -kirjoja {public string title public string author public string subject public int book_id} public class Edureka {public static void Main (string [] args) {Books Book1 Books Book2 Book1.title = 'C # Programming' Book1.author = ' Ramchandra Kumar 'Book1.subject =' C ++ -ohjelmointiopas 'Book1.book_id = 95908978 Book2.title =' Telecom Billing 'Book2.author =' Karan 'Book2.subject =' Telecom Billing Tutorial 'Book2.book_id = 18674900 Console.WriteLine ( 'Book 1 title: {0}', Book1.title) Console.WriteLine ('Book 1 Author: {0}', Book1.author) Console.WriteLine ('Book 1 Subject: {0}', Book1.subject) Console.WriteLine ('Book 1 book_id: {0}', Book1.book_id) Console.WriteLine ('Book 2 title: {0}', Book2.title) Console.WriteLine ('Book 2 Author: {0}', Book2.author) Console.WriteLine ('Book 2 Subject: {0}', Book2.subject) Console.WriteLine ('Book 2 book_id: {0}', Book2.book_id) Console.ReadKey ()}}

// Tuotos:

Kirjan 1 nimi: C # -ohjelmointi
Kirja 1 Kirjoittaja: Ramchandra Kumar
Kirja 1 aihe: C ++ -ohjelmointiopetus
Kirja 1 book_id: 95908978
Kirja 2: Telecom Billing
Kirja 2 Kirjoittaja: Karan
Kirjan 2 aihe: Tietoliikenteen laskutusopastus
Kirja 2 book_id: 18674900

Toiminnot

Toiminto määritellään pääkoodin koodilohkona. Funktiota käytetään koodilohkossa määriteltyjen lauseiden suorittamiseen. Funktio koostuu seuraavista komponenteista.

  • Toiminnon nimi: Se on erottuva nimi, jota käytetään Function-puhelun soittamiseen.
  • Palautustyyppi: Se määrittää funktion palautusarvon tietotyypin.
  • Runko: Se sisältää suoritettavia lauseita.
  • Käyttöoikeuksien määrittelijä: Se määrittää toimintojen saavutettavuuden sovelluksessa.
  • Parametrit: Se on luettelo argumenteista, jotka voimme välittää funktiolle puhelun aikana.

Syntaksi

FunctionName () {// function body // return lause}

Esimerkki:

Käyttämällä järjestelmän nimiavaruutta ToimintoEsimerkki {class Edureka {public string Show (string message) {Console.WriteLine ('Inside Show Function') return message} static void Main (string [] args) {Edureka program = new Edureka () string message = program .Show ('Edurekalle') -konsoli.WriteLine ('Tervetuloa' + viesti)}}}

// Tuotos:

Inside Show -toiminto
Tervetuloa Edurekaan

Toiminnot voidaan suorittaa kolmella eri tavalla:

  • Soita arvon mukaan
  • Soita viitteellä
  • Ulos parametri

Soita arvon mukaan

C #: ssä, arvo -tyyppi parametritovattuo passikopioalkuperäisen arvon-toiminnon sijaanviite. Seeimuuttaaensimmäinen arvo. Anmuutos luotuohitettuarvo eiIkätietty arvo.sisälläseuraava esimerkki,meillä onkulkeaarvo kaikkiallasoittaa puhelimella.

Esimerkki:

avattava valikko angularjsissa
käyttämällä järjestelmän nimiavaruutta CallByValue {class Edureka {public void Show (int val) {val * = val Console.WriteLine ('The show inside the function function + val)} static void Main (string [] args) {int val = 50 Edureka-ohjelma = uusi Edureka () Console.WriteLine ('Arvo ennen funktion kutsumista' + val) -ohjelmaa. Show (val) Console.WriteLine ('Arvo funktion kutsumisen jälkeen' + val)}}}

// Tuotos:

Arvo ennen funktion 50 kutsumista
Esitystoiminnon arvo 2500
Arvo funktion 50 kutsumisen jälkeen

Soita viitteellä

Soita viitteellä -menetelmässäettä viite avainsana välittää argumentin viitetyypiksi. Se siirtää argumenttien viittauksen funktioon pikemminkin kuin kopion alkuperäisestä arvosta. Hyväksyttyjen arvojen muutokset ovat pysyviä ja muuttaa alkuperäinen muuttujan arvo.

Esimerkki:

käyttäen järjestelmän nimiavaruutta CallByReference {class Edureka {public void Show (ref int val) {val * = val Console.WriteLine ('The show inside the function function' + val)} static void Main (string [] args) {int val = 50 Edureka-ohjelma = uusi Edureka () Console.WriteLine ('Arvo ennen funktion kutsumista' + val) -ohjelmaa. Show (ref val) Console.WriteLine ('Arvo funktion kutsumisen jälkeen' + val)}}}

// Tuotos:

Arvo ennen funktion 50 kutsumista
Esitystoiminnon arvo 2500
Arvo funktion 2500 kutsumisen jälkeen

Ulos parametri

Out-parametritarjoaa ulos avainsana välittää argumentit out-type. Se on kuin viitetyyppi, paitsi että se ei vaadi muuttujan alustamista ennen välittämistä. Meidän on käytettävä ulos avainsana välittää argumentin out-type. Se on hyödyllinen, kun haluamme funktion palauttavan useita arvoja.

Esimerkki:

Käyttämällä järjestelmän nimiavaruutta OutParameter {class Edureka {public void Show (out int val) {int square = 5 val = square val * = val} static void Main (string [] args) {int val = 50 Edureka program = new Edureka () Console.WriteLine ('Arvo ennen muuttujan' + val jakamista 'ohjelmaa. Show (out val) Console.WriteLine (' Arvo, kun muuttuja on vastaanotettu '+ val)}}}

// Tuotos:

Arvo ennen muuttujan 50 jakamista

Arvosaatuaan muuttujan 25

Siirrytään nyt olio-ohjelmointiin

Olio-ohjelmointi

Olio-ohjelmointi Järjestelmäon ohjelmointiparadigma, joka perustuu esineitä jotka sisältävät tietojen jäsenet ja menetelmiä liittyvät niihin. Kohdekohtaisen ohjelmoinnin ensisijaisena tarkoituksena on lisätä ohjelmien joustavuutta ja ylläpidettävyyttä

Olio-ohjelmoinnin ominaisuudet:

  • Siinä korostetaan enemmän tietoja kuin menettelyjä.
  • Ohjelmat on jaettu esineisiin, joten niiden käyttö on helppoa.
  • Tietorakenteet on suunniteltu siten, että ne luonnehtivat objekteja.
  • Toimivat toiminnot päälläobjektin tiedot sijoitetaan yhteen tietorakenteeseen.
  • Tiedot on piilotettu, eikä niitä voi käyttää ulkoisilla toiminnoilla ilman lupaa.
  • Objektien välinen viestintä voi tapahtua toimintojen avulla.
  • Uusien tietojen ja toimintojen lisääminen on tullut helppoa.
  • Seuraa alhaalta ylöspäin suuntautuvaa lähestymistapaa ohjelman suunnittelussa.

Kohdeorientoidut paradigmat C #: ssä ovat seuraavat

Luku C #

Enum tai kutsutaan myös nimellä luettelointi C #: ssä käytetään vakioarvojen tallentamiseen tarvitsematta muuttaa niitä C # -ohjelman koko suorituksen aikana. Sekäytetään tallentamaan joukko nimettyjä vakioita, kuten kausi, päivät, kuukausi, koko jne

Esimerkki:

käyttäen System public class EnumExample {public enum week {maanantai, tiistai, keskiviikko, torstai, perjantai, lauantai, sunnuntai} public static void Main () {int x = (int) viikko. maanantai int y = (int) viikko. perjantai konsoli .WriteLine ('maanantai = {0}', x) konsoli.WriteLine ('perjantai = {0}', y)}}

// Tuotos:

Maanantai = 0
Perjantai = 4

Kohdekeskeinen ohjelmointitapa

Kohdepainotteinen ohjelmointityyli voidaan saavuttaa noudattamalla alla kuvattuja menetelmiä.

Kapselointi

Kapselointi on menetelmä yhdistää menetelmiä yhdessä heidän kanssaan tietojen jäsenet.

Esimerkki:

käyttämällä järjestelmän nimiavaruutta Edureka {luokka Suorakulmio {julkinen kaksinkertainen julkinen kaksinkertainen leveys julkinen kaksinkertainen GetArea () {paluupituus * leveys} julkinen tyhjä näyttö () {Console.WriteLine ('Pituus: {0}', pituus) Console.WriteLine (' Leveys: {0} ', leveys) Console.WriteLine (' Area: {0} ', GetArea ())}} class ExecuteRectangle {static void Main (string [] args) {Rectangle r = new Rectangle () r.pituus = 50 r.leveys = 35 r.Display () Console.ReadLine ()}}}

// Tuotos:

Pituus: 50
Leveys: 35
Alue: 1750

Abstraktio

Abstraktio on menetelmä piilottaa käyttäjän monimutkainen koodausosa antamalla hänelle vain tarvitsemansa tiedot.

Esimerkki:

käyttäen järjestelmää julkinen abstrakti luokka Muoto {julkinen abstrakti void draw ()} julkinen luokka Suorakulmio: Muoto {julkinen ohittaa tyhjä piirtäminen () {Console.WriteLine ('piirustus suorakulmio ...')}}} julkisen luokan ympyrä: Muoto {julkinen ohittaa mitätön piirtää () {Console.WriteLine ('piirustusympyrä ...')}} public class TestAbstract {public static void Main () {Shape ss = new Rectangle () s.draw () s = new Circle () s.draw ()}}

// Tuotos:

suorakulmion piirtäminen ...
piirustuspiiri ...

Käyttöliittymä

käyttöliittymä on täysin samanlainen kuin abstraktio. Käyttöliittymän toiminnallisuus on piilottaa tärkeät tiedot käyttäjältä ja antaa hänelle ainoat tärkeät tiedot, joita hän tarvitsee.

Esimerkki:

järjestelmän julkisen käyttöliittymän avulla Drawable {void draw ()} public class Rectangle: Drawable {public void draw () {Console.WriteLine ('drawing rectangle ...')}} public class Circle: Drawable {public void draw () {Console .WriteLine ('piirustusympyrä ...')}} public class TestInterface {public static void Main () {Drawable dd = new Rectangle () d.draw () d = new Circle () d.draw ()}}

// Tuotos:

suorakulmion piirtäminen ...
piirustuspiiri ...

Polymorfismi

Polymorfismion yhdistelmä 'Poly' + 'Morphs' mikä tarkoittaa monia muotoja. Se on kreikkalainen sana. Se tarkoittaa, että koodisegmentti voi olla monessa muodossa. Meillä on kahden tyyppinen polymorfismi.

  • Koosta aikapolymorfismi
  • Ajan polymorfismi

Esimerkki:

käyttäen järjestelmää public class Animal {public string color = 'white'} public class Dog: Animal {public string color = 'black'} public class TestSealed {public static void Main () {Animal d = new Dog () Console.WriteLine ( d.väri)}}

// Tuotos:

valkoinen

Perintö

Perintö on prosessi, jossa yksi objekti hankkii kaikki pääobjektinsa ominaisuudet ja käyttäytymisen automaattisesti. Voit käyttää, laajentaa tai muokata määritteitä ja käyttäytymistä, jotka on määritelty toisessa luokassa. luokkaa, joka perii toisen luokan jäsenet, kutsutaan johdettu luokka ja luokkaa, jonka jäsenet ovat perittyjä, kutsutaan pohja luokassa. Johdettu luokka on erikoisluokka perusluokalle.

Esimerkki yksitasoisesta perinnöstä

käyttäen Järjestelmän nimitila RectangleApplication {class Rectangle {suojattu kaksinkertainen pituus suojattu kaksinkertainen leveys julkinen suorakulmio (kaksinkertainen l, kaksinkertainen w) {pituus = l leveys = w} julkinen kaksinkertainen GetArea () {paluupituus * leveys} julkinen tyhjä näyttö () {konsoli. WriteLine ('Pituus: {0}', pituus) Console.WriteLine ('Leveys: {0}', leveys) Console.WriteLine ('Alue: {0}', GetArea ())}} -luokka Pöytälevy: Suorakulmio {yksityinen kaksinkertainen hinta julkinen pöytätaso (kaksinkertainen l, kaksinkertainen w): pohja (l, w) {} julkinen kaksinkertainen GetCost () {kaksinkertainen kustannus = GetArea () * 70 palautuskustannus} public void Display () {base.Display () -konsoli .WriteLine ('Hinta: {0}', GetCost ())}}} luokka ExecuteRectangle {staattinen void Main (merkkijono [string]] {Pöytäkone t = uusi Pöytäkone (4.5, 7.5) t.Display () Console.ReadLine () }}}

// Tuotos:

Pituus: 4.5
Leveys: 7,5
Pinta-ala: 33,75
Kustannukset: 2362,5

Esimerkki monitasoisesta perinnöstä

käyttämällä järjestelmän nimiavaruutta InheritanceApplication {class Shape {public void setWidth (int w) {width = w} public void setHeight (int h) {height = h} protected int width protected int height} public interface PaintCost {int getCost (int area)} class Rectangle: Shape, PaintCost {public int getArea () {return (width * height)} public int getCost (int area) {return area * 70}} class RectangleTester {static void Main (string [] args) {Suorakulmio Suora = uusi Suorakulmio () int-alue Rect.setWidth (5) Rect.setHeight (7) -alue = Rect.getArea () Console.WriteLine ('Kokonaispinta-ala: {0}', Rect.getArea ()) Console.WriteLine ('Yhteensä maalin hinta: $ {0} ', Rect.getCost (alue)) Console.ReadKey ()}}}

// Tuotos:

Kokonaispinta-ala: 35
Maalien kokonaiskustannukset: 2450 dollaria

Ylikuormitus

Ylikuormitus on tilanne, jossa meillä on kaksi tai jäsenet ilmoitetaan käyttävän samaa nimeä. Ylikuormitus on mahdollista myös silloin, kun ilmoitamme kaksi tai useampia samannimisiä menetelmiä. Tarkastellaan esimerkkejä molemmista.

Jäsenen ylikuormitus

Esimerkki:

käyttämällä järjestelmää julkinen luokka Edureka {public static int add (int a, int b) {return a + b} public staattinen int add (int a, int b, int c) {return a + b + c}} public class TestMemberOerloading { public static void Main () {Console.WriteLine (Edureka.add (12, 23)) Console.WriteLine (Edureka.add (12, 23, 25))}}

// Tuotos:

35
60

Menetelmä Ylikuormitus

Esimerkki:

käyttäen järjestelmää julkinen luokka Edureka {public static int add (int a, int b) {return a + b} public static float add (float a, float b) {return a + b}} public class TestMemberOverloading {public static void Main ( ) {Console.WriteLine (Edureka.add (12, 23)) Console.WriteLine (Edureka.add (12.4f, 21.3f))}}

// Tuotos:

35
33.699997

Korvaava

Ohittaminen on tilanne, jossa lapsiluokka määrittelee saman menetelmän, jonka myös vanhempi määrittelee. Ymmärretään tämä pienen esimerkin avulla.

Esimerkki:

käyttäen System public class Edureka {public virtual void eat () {Console.WriteLine ('Eating')}} public class Dog: Edureka {public override void eat () {Console.WriteLine ('Eating food')}} public class Overriding {public static void Main () {Koira d = uusi Koira () d.eat ()}}

// Tuotos:

Ruoan syöminen

Nimitila

nimitila käytetään periaatteessa useiden ohjelmassa olevien luokkien käsittelemiseen. Nimitila on käytettävissä eri tavoin.

  • System.Console: Tässä Järjestelmä tulee nimitila
  • Meidän on käytettävä nimitilan luokan käyttöä namespacename.luokanimi.
  • Voimme käyttää käyttämällä avainsana.

Esimerkki:

järjestelmän käyttäminen ensin käyttämällä toista nimiavaruutta Ensimmäinen {julkinen luokka Edureka {public void sayWelcome () {Console.WriteLine ('Welcome to Edureka')}}}} nimitila Toinen {public class Happy_Learning {public void sayWishes () {Console.WriteLine (' Hyvää oppimista ')}}} julkisen luokan nimiavaruus {public static void Main () {Edureka h1 = new Edureka () Happy_Learning w1 = new Happy_Learning () h1.sayWelcome () w1.sayWishes ()}}

// Tuotos:

Tervetuloa Edurekaan
Hyvää oppimista

Tiedostotoiminnot

tiedostotoiminnot saatavana C #: nä, ovat seuraavat:

Operaatio Kuvaus
BinaryReader Lukee primitiiviset tiedot binaarivirrasta.
BinaryWriter Kirjoittaa primitiiviset tiedot binaarimuodossa.
Puskuroitu virta Tilapäinen tallennus tavuvirralle.
Hakemisto Auttaa manipuloimaan hakemistorakennetta.
Hakemistotiedot Käytetään hakemistojen toimintojen suorittamiseen.
DriveInfo Tarjoaa tietoja asemista.
Tiedosto Auttaa tiedostojen käsittelyssä.
FileInfo Käytetään tiedostojen toimintojen suorittamiseen.
FileStream Käytetään lukemiseen ja kirjoittamiseen mihin tahansa tiedoston kohtaan.
MemoryStream Käytetään muistiin tallennettujen suoratoistettujen tietojen satunnaiseen käyttöön.
Polku Suorittaa reittitietoja.
StreamReader Käytetään merkkien lukemiseen tavuvirrasta.
StreamWriter Käytetään merkkien kirjoittamiseen streamiin.
StringReader Käytetään lukemiseen merkkijonopuskurista.
StringWriter Käytetään merkkijonopuskuriin kirjoittamiseen.

FileMode

FileMode on luetteloija, joka määrittelee useita tiedostojen avaustapoja. FileMode Enumeratorin jäsenet kuvataan seuraavasti:

  • Liite: Se avaa olemassa olevan tiedoston ja siirtää kohdistimen tiedoston loppuun tai luo tiedoston, jos tiedostoa ei ole.
  • Luoda: Se on suunniteltu luomaan uusi tiedosto.
  • Luo uusi: Se on suunniteltu määrittämään käyttöjärjestelmälle, että sen pitäisi luoda uusi tiedosto.
  • Avata: Se on suunniteltu avaamaan olemassa oleva tiedosto.
  • OpenOrCreate: Se on suunniteltu määrittämään käyttöjärjestelmä, jonka mukaan sen pitäisi avata tiedosto, jos sellainen on, muuten sen pitäisi luoda uusi tiedosto.
  • Katkaista: Leikkaa avaa olemassa olevan tiedoston ja katkaisee sen koon nolla tavua.

FileAccess

FileAccess Enumerator on tottunut pääsemään tiettyyn tiedostoon. Siinä on seuraavat jäsenet.

  • Lukea
  • Kirjoittaa
  • Lukea kirjoittaa

Tiedoston jako

Tiedoston jako Luetteloa käytetään tietyn tiedoston jakamiseen. Siinä on seuraavat jäsenet.

  • Perinnöllinen: Perinnöllinen antaa tiedostokahvan siirtää perinnön lapsen prosesseihin.
  • Ei mitään: Kukaan ei kiellä nykyisen tiedoston jakamista
  • Lukea: Luku sallii tiedoston avaamisen lukemista varten.
  • Lukea kirjoittaa: ReadWrite mahdollistaa tiedoston avaamisen lukemista ja kirjoittamista varten.
  • Kirjoittaa: Kirjoitus sallii tiedoston avaamisen kirjoitusta varten.

Tapahtumat

Tapahtuma tunnetaan yleensä käyttäjän luomana toimintona. Se voi olla hiiren napsautus ja jopa yksi näppäimen painallus näppäimistöltä. Vastaavasti myös C # -ohjelmissa on tapahtumia. Tapahtuman generaattoria kutsutaan kustantaja ja tapahtuman vastaanotinta kutsutaan tilaaja.

Kustantaja

TO kustantaja sisältää tapahtuman määritelmän ja edustajan. tapahtuman edustaja assosiaatio on määritelty tässä objektissa. A kustantaja luokan objekti kutsuu tapahtuman ja siitä ilmoitetaan muille kohteille.

Tilaaja

TO tilaaja hyväksyy tapahtuman ja tarjoaa tapahtumakäsittelijä. delegoida julkaisijaluokassa käyttää menetelmää / tapahtumaa käsittelijä tilaajaluokasta.

Esimerkki:

käyttämällä järjestelmän nimiavaruutta Edureka {public delegate string Del (string str) class EventBlock {event Del NewEvent public EventBlock () {this.NewEvent + = new Del (this.WelcomeUser)} public string WelcomeUser (string username) {return 'Welcome to Edureka . '+ käyttäjänimi} staattinen void Main (merkkijono [] args) {EventBlock obj1 = new EventBlock () merkkijono tulos = obj1.NewEvent (' Happy Learning ') -konsoli.WriteLine (tulos)}}}

// Tuotos:

Tervetuloa Edurekaan. Hyvää oppimista

Yleiset

Yleiset on käsite luokan jäsenten ja menetelmien tarjoamisesta paikkojen haltijoille Käyttöaika. Voimme määritellä Generics käyttämällä suluissa. Tarkastellaan seuraavia esimerkkejä.

Geneeriset aineet luokassa

käyttämällä järjestelmän nimiavaruutta Edureka {class GenericClass {public GenericClass (T msg) {Console.WriteLine (msg)}} class Program {static void Main (string [] args) {GenericClass gen = new GenericClass ('Tämä viesti on peräisin yleisluokasta' ) GenericClass genI = new GenericClass (123) GenericClass getCh = new GenericClass ('E')}}}

// Tuotos:

Tämä viesti on peräisin yleisluokasta
123
ON

Geneeriset aineet menetelmässä

käyttämällä järjestelmän nimiavaruutta Edureka {class GenericClass {public void Show (T msg) {Console.WriteLine (msg)}} class Program {static void Main (string [] args) {GenericClass genC = new GenericClass () genC.Show ('Tämä viesti on peräisin yleisestä menetelmästä ') genC.Show (321) genC.Show (' H ')}}}

// Tuotos:

Tämä viesti on peräisin yleisestä menetelmästä
321
H

Edustajat

Delegoida toimii viitteenä menetelmään. Pohjimmiltaan se on sama kuin a toiminnon osoitin C ja C ++, mutta paljon parempia ja tyyppiturvallisempia. Edustaja staattinen menetelmä kapseloi vain menetelmän. Vaikka edustaja ilmentymä method kapseloi sekä menetelmän että instanssin. Edustajan paras käyttö on käyttää tapahtuma.

Esimerkki:

käyttäen System delegate int Laskinta (int n) julkinen luokka Edureka {staattinen int numero = 25 julkinen staattinen int lisää (int n) {numero = numero + n palautusluku} julkinen staattinen int mul (int n) {numero = numero * n paluu numero} public static int getNumber () {return number} public static void Main (string [] args) {Laskin c1 = uusi Laskin (lisää) Laskin c2 = uusi Laskin (mul) c1 (20) Console.WriteLine ('Laskimen jälkeen yksi edustaja, uusi numero on: '+ getNumber ()) c2 (3) Console.WriteLine (' Laskurin jälkeen kaksi edustajaa uusi numero on: '+ getNumber ())}}

// Tuotos:

Yhden edustajan laskimen jälkeen uusi luku on: 45
Kun kaksi laskijaa on laskettu, uusi luku on 135

Heijastus

Reflektiota tarvitaan metatietojen saamiseksi ajon aikana. Viite on saatavilla Järjestelmä Heijastus nimitila. Se vaatii seuraavien luokkien suorittamista.

  • Tyyppi
  • MemberInfo
  • Rakentajainfo
  • MethodInfo
  • FieldInfo
  • PropertyInfo
  • TypeInfo
  • EventInfo
  • Moduuli
  • Kokoaminen
  • AssemblyName
  • Osoitin

Tyyppiluokka

C # -tyyppiluokka edustaa luokkatyyppien, liitäntätyyppien, luettelointityyppien, taulukotyyppien, arvotyyppien tyypin ilmoituksia

Kirjoita Ominaisuudet

Alla on luettelo tyypiluokkien tärkeistä ominaisuuksista.

Omaisuus Kuvaus
Kokoaminen Hanki tämäntyyppisen kokoonpanon.
AssemblyQualifiedName Hakee Assembly-tyyppisen nimen tälle tyypille.
Määritteet Noutaa tyyppiin liittyvät määritteet.
BaseType Hakee perus- tai ylätyypin.
Koko nimi Hakee tyypin täysin hyväksytyn nimen.
Isabstrakti käytetään tarkistamaan, onko tyyppi abstrakti.
IsArray käytetään tarkistamaan, onko tyyppi Array.
IsClass käytetään tarkistamaan, onko tyyppi luokka.
IsEnum käytetään tarkistamaan onko tyyppi Enum.
IsInterface käytetään tarkistamaan, onko tyyppi Interface.
On sisäkkäin käytetään tarkistamaan, onko tyyppi sisäkkäinen.
IsPrimitive käytetään tarkistamaan, onko tyyppi primitiivinen.
IsPointer käytetään tarkistamaan, onko tyyppi osoitin.
IsNotPublic käytetään tarkistamaan, onko tyyppi ei julkinen.
IsPublic käytetään tarkistamaan, onko tyyppi julkinen.
On suljettu käytetään tarkistamaan, onko tyyppi sinetöity.
IsSerializable käytetään tarkistamaan, onko tyyppi Serializable.
MemberType käytetään tarkistamaan onko tyyppi sisäkkäisen jäsenen tyyppi.
Moduuli Hankkii tyypin moduulin.
Nimi Hakee tyypin nimen.
Nimitila Hakee tyypin nimitilan.
Omaisuus Kuvaus
GetConstructors () Palauttaa kaikki tyypin julkiset rakentajat.
GetConstructors (BindingFlags) Palauttaa kaikki tyypin konstruktorit määritetyillä BindingFlag-tiedostoilla.
GetFields () Palauttaa kaikki tyypin julkiset kentät.
GetFields (BindingFlags) Palauttaa kaikki tyypin julkiset rakennuttajat määritetyillä BindingFlags-tiedostoilla.
GetMembers () Palauttaa tyypin kaikki julkiset jäsenet.
GetMembers (BindingFlags) Palauttaa kaikki tyypin jäsenet määritetyillä BindingFlags-tiedostoilla.
GetMethods () Palauttaa kaikki tyypin julkiset menetelmät.
GetMethods (BindingFlags) Palauttaa kaikki tyypin menetelmät määritetyillä BindingFlags-tiedostoilla.
GetProperties () Palauttaa kaikki tyypin julkiset ominaisuudet.
GetProperties (BindingFlags) Palauttaa kaikki tyypin ominaisuudet määritetyillä BindingFlags-tiedostoilla.
GetType () Hakee nykyisen tyypin.
GetType (merkkijono) Hakee nimen nimen.

Heijastusesimerkkejä:

Hanki tyyppi

Esimerkki:

käyttäen järjestelmän julkista luokkaa GetType {public static void Main () {int a = 10 Type type = a.GetType () Console.WriteLine (type)}}

// Tuotos:

System.Int32

Hanki kokoonpano

Esimerkki:

käyttämällä järjestelmää käyttämällä System.Reflection public class GetAssembly {public static void Main () {Type t = typeof (System.String) Console.WriteLine (t.Assembly)}}

// Tuotos:

System.Private.CoreLib, Versio = 4.0.0.0, Kulttuuri = neutraali, PublicKeyToken = 7cec85d7bea7798e

Tulostustyypin tiedot

Esimerkki:

käyttämällä järjestelmää käyttämällä System.Reflection public class PrintType {public static void Main () {Type t = typeof (System.String) Console.WriteLine (t.FullName) Console.WriteLine (t.BaseType) Console.WriteLine (t.IsClass) Console.WriteLine (t.IsEnum) Console.WriteLine (t.IsInterface)}}

// Tuotos:

Totta
Väärä
Väärä

Tulosta rakentajat

Esimerkki:

käyttämällä järjestelmää käyttämällä System.Reflection public class PrintConstructors {public static void Main () {Type t = typeof (System.String) Console.WriteLine ('{0} type ...', t) ConstructorInfo [] ci = t .GetConstructors (BindingFlags.Public | BindingFlags.Instance) foreach (ConstructorInfo c in ci) {Console.WriteLine (c)}}}

// Tuotos:

Järjestelmän rakentajat. Merkkijonotyyppi ...
Tyhjä .ctor (Char [])
Tyhjä .ctor (Char [], Int32, Int32)
Void .ctor (Char *)
Void .ctor (Char *, Int32, Int32)
Void .ctor (SByte *)
Void .ctor (SByte *, Int32, Int32)
Void .ctor (SByte *, Int32, Int32, System.Text.Encoding)
Tyhjä .ctor (Char, Int32)
Void .ctor (System.ReadOnlySpan`1 [System.Char])

Tulostusmenetelmät

Esimerkki:

käyttämällä järjestelmää käyttämällä System.Reflection public class PrintMethods {public static void Main () {Type t = typeof (System.String) Console.WriteLine ('Methods of {0} type ...', t) MethodInfo [] ci = t .GetMethods (BindingFlags.Public | BindingFlags.Instance) foreach (MethodInfo m in ci) {Console.WriteLine (m)}}}

// Tuotos:

Menetelmät System.String-tyypistä ...
System.String Replace (System.String, System.String)
System.String [] Split (Char, System.StringSplitOptions)
System.String [] Split (Char, Int32, System.StringSplitOptions)
System.String [] Split (Char [])
System.String [] Split (Char [], Int32)
System.String [] Split (Char [], System.StringSplitOptions)
System.String [] Split (Char [], Int32, System.StringSplitOptions)
System.String [] Split (System.String, System.StringSplitOptions)
System.String [] Split (System.String, Int32, System.StringSplitOptions)
System.String [] Split (System.String [], System.StringSplitOptions)
System.String [] Split (System.String [], Int32, System.StringSplitOptions) ......

Tulosta kentät

Esimerkki:

käyttämällä järjestelmää käyttämällä System.Reflection public class PrintFields {public static void Main () {Type t = typeof (System.String) Console.WriteLine ('{0} type ...', t) FieldInfo [] ci = t .GetFields (BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic) foreach (FieldInfo f in ci) {Console.WriteLine (f)}}}

// Tuotos:

Järjestelmän kentät. Merkkijonotyyppi ...
System.String Tyhjä

Siirrytään nyt joihinkin edistyneisiin C # -ohjelmointikonsepteihin

Edistyneet C # -konseptit

Nimetön toiminto

Toimintoa, josta puuttuu tietty nimi, kutsutaan Nimetön Toiminnot. C #: ssä on kahdenlaisia ​​nimettömiä toimintoja

  • Lambda-lausekkeet
  • Anonyymit menetelmät

Esimerkki:

käyttämällä järjestelmän nimitilaa LambdaExpressions {class Edureka {delegate int Square (int num) static void Main (string [] args) {Square GetSquare = x => x * x int j = GetSquare (25) Console.WriteLine ('Square:' + j)}}}

// Tuotos:

Neliö: 625

Anonyymit menetelmät

tuntematon menetelmä tarjoaa saman toiminnallisuuden kuin a lambda-ilmaisu, paitsi että se antaa meille mahdollisuuden ohittaa parametriluettelon.

Esimerkki:

käyttämällä järjestelmän nimiavaruutta AnonymousMethods {class Program {public delegate void AnonymousFun () static void Main (string [] args) {AnonymousFun fun = delegate () {Console.WriteLine ('This is anonymous function')} fun ()}}}

// Tuotos:

Tämä on tuntematon toiminto

Monisäikeinen

Monisäikeisyys on prosessi, jossa luodaan ja määritetään useita ketjuja eri tehtäviin. tämä säästää aikaa suorittamalla useita töitä kerralla. Monisäikeinen luokka on saatavana kielellä Järjestelmä nimitila.

Nimijärjestelmän ketjutus

Järjestelmä nimitila sisältää luokkia ja rajapintoja monisäikeisyyden helpottamiseksi. Se tarjoaa luokkia synkronoimaan säikeresurssin. Alla on luettelo yleisesti käytetyistä luokista:

  • Lanka
  • Mutex
  • Ajastin
  • Monitori
  • Semafori
  • ThreadPaikallinen
  • ThreadPool
  • Haihtuva

Prosessi ja lanka

Prosessi on todella ja sovellus ja sen katsotaan olevan raskas komponentti. Toisaalta lanka on yksi ainoa moduuli koko sovelluksesta. se on kevyt verrattuna prosessiin

Langan elinkaari

Jokaisella langalla on elinkaari. Langan elinkaari määritetään System.Threading.Thread-luokassa. Seuraavat ovat minkä tahansa säikeen elinkaaren vaiheet.

  • Aloittamaton
  • Juokseva (käyttövalmis)
  • Juoksu
  • Ei ajettavissa
  • Kuollut

Thread-luokka tarjoaa seuraavat ominaisuudet ja menetelmät seuraavasti.

Langan ominaisuudet

Omaisuus Kuvaus
CurrentThread palauttaa käynnissä olevan ketjun ilmentymän.
On elossa tarkistaa onko nykyinen ketju elossa vai ei.
OnTausta Nykyisen säikeen arvon saaminen / asettaminen on taustalla tai ei.
ManagedThreadId käytetään nykyisen hallitun säikeen yksilöllisen tunnuksen saamiseen.
Nimi käytetään nykyisen ketjun nimen hankkimiseen tai asettamiseen.
Prioriteetti käytetään nykyisen ketjun prioriteetin hakemiseen tai asettamiseen.
ThreadState käytetään palauttamaan kierteen tilaa edustava arvo.

Lankamenetelmät

Menetelmä Kuvaus
Abortti () käytetään päättämään lanka. Se herättää ThreadAbortExceptionin.
Keskeyttää() käytetään keskeyttämään ketju, joka on WaitSleepJoin-tilassa.
Liittyä seuraan() käytetään estämään kaikki kutsuvat säikeet, kunnes tämä ketju päättyy.
ResetAbort () käytetään peruuttamaan nykyisen ketjun keskeytyspyyntö.
Jatkaa() käytetään ripustetun langan jatkamiseen. Se on vanhentunut.
Lepotila (Int32) käytetään keskeyttämään nykyinen säie määritettyihin millisekunteihin.
Alkaa() muuttaa ketjun nykyisen tilan Runnable-tilaksi.
Keskeyttää() keskeyttää nykyisen säikeen, ellei sitä ole keskeytetty. Se on vanhentunut.
Tuotto () käytetään nykyisen säikeen suorittamisen tuottamiseksi toiselle säikeelle.

Esimerkki pääketjusta

käyttämällä järjestelmää järjestelmän avulla. julkisen luokan leviäminen Edureka {public static void Main (string [] args) {Thread t = Thread.CurrentThread t.Name = 'MainThread' Console.WriteLine (t.Name)}}

// Tuotos:

MainThread

Poikkeusten käsittely

poikkeus on virhe, jonka ohjelma on heittänyt ajon aikana. Suoritamme poikkeusten käsittelyä saadaksemme ohjelmamme poikkeuksettomaksi.

Poikkeus Kuvaus
System.DivideByZeroException Virhe syntyy jakamalla numero nollalla.
System.NullReferenceException käsittelee virhe, joka syntyy viittaamalla nollaobjektiin.
System.InvalidCastException käsittelee virheellisen kirjoitusvirheen aiheuttaman virheen.
System.IO.IOException käsittelee tulo- / lähtövirheet.
System.FieldAccessException Virhe virheellisen yksityisen / suojatun käyttöoikeuden vuoksi.

C #: ssä suoritamme 4 avainsanaa poikkeusten käsittely:

  • yrittää
  • ottaa kiinni
  • lopuksi, ja
  • heittää
Esimerkki:
käyttämällä järjestelmän julkista luokkaa EdurekExample {public static void Main (string [] args) {try {int a = 10 int b = 0 int x = a / b} catch (Exception e) {Console.WriteLine (e)} Console.WriteLine ('Tämä viesti on salauslohkosta')}}

// Tuotos:

System.DivideByZeroException: Yritettiin jakaa nollalla.
osoitteessa ExExaEdurekample.Main (Merkkijono [] argumentit) muodossa F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: rivi 10
Tämä viesti on salauslohkosta

Räätälöity poikkeusesimerkki

käyttäen System public class InvalidAgeException: Exception {public InvalidAgeException (String message): base (message) {}} public class Customized {static void validate (int age) {if (age)<18) { throw new InvalidAgeException('Sorry, Age is expected to be greater than 18') } } public static void Main(string[] args) { try { validate(12) } catch (InvalidAgeException e) { Console.WriteLine(e) } Console.WriteLine('Catch block is being executed now.') } } 

// Tuotos:

InvalidAgeException: Ikän odotetaan olevan yli 18
osoitteessa Customized.validate (Int32-ikä) F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: rivi 18
osoitteessa Customized.Main (Merkkijono [] argumentit) muodossa F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: rivi 23
Saalislohko suoritetaan nyt.

Lopuksi estä esimerkki

käyttäen System public class FinalExecption {public static void Main (string [] args) {yritä {int a = 10 int b = 0 int x = a / b} catch (Poikkeus e) {Console.WriteLine (e)} lopuksi {Console .WriteLine ('Viimeinen lohko suoritetaan')} Konsoli.WriteLine ('Sieppauslohko suoritetaan')}}

// Tuotos:

System.DivideByZeroException: Yritettiin jakaa nollalla.
osoitteessa FinalExecption.Main (merkkijono [] argumentti) muodossa F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: rivi 10
Lopuksi lohko suoritetaan
Saalislohko suoritetaan

Järjestelmän poikkeuksen allekirjoitus

[SerializableAttribute] [ComVisibleAttribute (true)] julkinen luokka SystemException: Exception

Järjestelmän poikkeusrakentajat

Rakentaja Kuvaus
SystemException () Sitä käytetään alustamaan uusi SystemException-luokan ilmentymä.
SystemException

(SerializationInfo, StreamingContext)

Sitä käytetään alustamaan uusi SystemException-luokan ilmentymä sarjoitetuilla tiedoilla.
SystemException (merkkijono) Sitä käytetään alustamaan uusi SystemException-luokan ilmentymä määritetyllä virhesanomalla.
SystemException (merkkijono, poikkeus) Sitä käytetään alustamaan uusi SystemException-luokan ilmentymä määritetyllä virheilmoituksella ja viittauksella sisäiseen poikkeukseen, joka on tämän poikkeuksen syy.

Järjestelmän poikkeusominaisuudet

Omaisuus Kuvaus
Tiedot Sitä käytetään kokoamaan avain / arvo-parit, jotka antavat käyttäjän määrittelemiä lisätietoja poikkeuksesta.
HelpLink Sitä käytetään tai asetetaan linkki tähän poikkeukseen liittyvään ohjetiedostoon.
HRtulos Sitä käytetään tai asetetaan HRESULT, koodattu numeerinen arvo, joka on osoitettu tietylle poikkeukselle.
InnerException Sitä käytetään nykyisen poikkeuksen aiheuttaneen Exception-esiintymän saamiseen.
Viesti Sitä käytetään saamaan viesti, joka kuvaa nykyistä poikkeusta.
Lähde Sitä käytetään virheen aiheuttavan sovelluksen nimen hakemiseen tai asettamiseen.
PinoTrace Sitä käytetään merkkijonoesityksen välittömistä kehyksistä puhelupinossa.
TargetSite Sitä käytetään menetelmän saamiseksi, joka heittää nykyisen poikkeuksen.

Järjestelmän poikkeusmenetelmät

Menetelmät Kuvaus
Yhtä (objekti) Sitä käytetään tarkistamaan, että määritetty objekti on yhtä suuri kuin nykyinen objekti vai ei.
Viimeistele () Sitä käytetään resurssien vapauttamiseen ja puhdistustoimintojen suorittamiseen.
GetBaseException () Sitä käytetään root-poikkeuksen saamiseen.
GetHashCode () Sitä käytetään hajautuskoodin saamiseen.
GetObjectData

(SerializationInfo, StreamingContext)

Sitä käytetään objektitietojen saamiseen.
GetType () Sitä käytetään nykyisen esiintymän ajonaikaisen tyypin saamiseen.
MemberwiseClone () Sitä käytetään luomaan matala kopio nykyisestä objektista.
ToString () Sitä käytetään luomaan ja palauttamaan merkkijonoesitys nykyisestä poikkeuksesta.

Esimerkki järjestelmän poikkeuksesta

käyttämällä järjestelmän nimiavaruutta CSharpProgram {class SystemExceptionExample {static void Main (string [] args) {try {int [] arr = new int [5] arr [10] = 25} catch (SystemException e) {Console.WriteLine (e)} }}}

// Tuotos:

System.IndexOutOfRangeException: Hakemisto oli matriisin rajojen ulkopuolella.
osoitteessa CSharpProgram.SystemExceptionExample.Main (String [] argumentit) F: ssä: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: rivi 11

Synkronointi

Synkronointi voi olla tekniikka, jonka avulla vain yksi ketju voi käyttää resurssia tietyn ajan. Mikään vaihtoehtoinen ketju ei keskeydy, ennen kuin nimetty ketju on suorittanut tehtävänsä.

Monisäikeisessä ohjelmassa langat ovat sallittujakäyttää kaikkia resurssejamääritetty suoritusaika. Viestiketjut jakavat resursseja ja suorittavat asynkronisesti. Jaettujen resurssien (tietojen) käyttövoi olla tärkeä tehtäväettä yleensävoi pysähtyäsysteemi.meillä on taipumus vaikuttaa siihenluomalla ketjuja synkronisesti.

Esimerkki ilman synkronointia

Järjestelmän käyttäminen Järjestelmää käyttäen. Edureka-luokan luokka {public void PrintTable () {for (int i = 1 i<= 10 i++) { Thread.Sleep(100) Console.WriteLine(i) } } } class Program { public static void Main(string[] args) { Edureka p = new Edureka() Thread t1 = new Thread(new ThreadStart(p.PrintTable)) Thread t2 = new Thread(new ThreadStart(p.PrintTable)) t1.Start() t2.Start() } } 

// Tuotos:

yksi
yksi
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
10
10

Esimerkki synkronoinnista

järjestelmän käyttäminen Järjestelmää käyttämällä. Edureka-luokan luokka {public void PrintTable () {lock (this) {for (int i = 1 i<= 10 i++) { Thread.Sleep(100) Console.WriteLine(i) } } } } class Program { public static void Main(string[] args) { Edureka p = new Edureka() Thread t1 = new Thread(new ThreadStart(p.PrintTable)) Thread t2 = new Thread(new ThreadStart(p.PrintTable)) t1.Start() t2.Start() } } 

// Tuotos:

yksi
2
3
4
5
6
7
8
9
10
yksi
2
3
4
5
6
7
8
9
10

Uudet ominaisuudet

Microsoft on lisännyt monia uusimpia ominaisuuksia C # -kielelle, joista osa on mainittu alla.

C # 6,0

  • Staattisen direktiivin käyttäminen
  • Poikkeussuodattimet
  • Odota saalis / lopulta estää
  • Automaattiset omaisuuden alustusohjelmat
  • Vain getter-ominaisuuksien oletusarvot
  • Ilmeikkäitä jäseniä
  • Tyhjä levittäjä
  • Merkkijonon interpolointi
  • Operaattorin nimi
  • Sanakirjan alustus
  • Kääntäjä palveluna (Roslyn)

C # 7,0

  • Kuvion sovitus
  • Tuples
  • Dekonstruktio
  • Paikalliset toiminnot
  • Numeroerotin
  • Binaariset literaalit
  • Ref palaa ja paikalliset
  • Ilmaisurunkoiset rakentajat ja viimeistelijät
  • Ilmaisurakenteiset getters ja setters
  • Out-muuttujat
  • Yleistetyt asynkroniset palautustyypit

C # 7.1

  • Asynkronoitu pää
  • Oletuslausekkeet

Haastattelukysymykset C #: n perusteella

Tärkeät haastattelukysymykset, jotka perustuvat C # -ohjelmointikieleen, löytyvät tästä päivitetystä .

Tämän avulla olemme päässeet tämän 'C # Tutorial' -artikkelin loppuun. Toivon, että olet ymmärtänyt tietorakenteiden, syntaksin, toiminnallisuuden ja niiden avulla suoritettujen toimintojen merkityksen. Nyt kun olet ymmärtänyt C #: n ohjelmoinnin perusteet tämän avullaC # -opetusohjelma, tutustu tarjottu koulutus Edureka on kehittänyt monia tekniikoita, kuten Java, kevät ja montaLuotettu verkko-oppimisyritys, jolla on yli 250 000 tyytyväisen oppijan verkosto ympäri maailmaa, sai kysymys meille? Mainitse se tämän 'C # Tutorial' -blogin kommenttiosassa, niin otamme sinuun yhteyttä mahdollisimman pian.