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
- C # -ohjelmointikielen ominaisuudet
- Asennus
- C # -ohjelman rakenne
- Tietotyypit
- Muuttujat
- Operaattorit
- Silmukat
- Ehdollinen
- Jouset
- Taulukot
- Kokoelmat
- Rakenne
- Toiminnot
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.
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:
- Jos lausunto
- If-Else-lause
- Sisäkkäinen If-else-lause
- If-Muu If tikkaat
- 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 merkkijonoluokallaEsimerkki:
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
TaulukotMuiden 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 luominenEsimerkki:
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
5
Akash
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 angularjsissakä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
Arvo
saatuaan 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 #
- Kohdekeskeinen ohjelmointitapa
- Ylikuormitus ja ohitus
- Nimitila
- Tiedostotoiminnot
- Tapahtumat
- Yleiset
- Edustajat
- Heijastus
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:
Esimerkki:
- yrittää
- ottaa kiinni
- lopuksi, ja
- heittää
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: ExceptionJä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
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.