C # juhendaja: põhialused, mida peate C # omandama



See artikkel C # juhendaja kohta aitab teil saada üksikasjalikumaid teadmisi C # põhialuste kohta ja reaalajas näiteid paremaks mõistmiseks.

C # on universaalne ja vastupidav programmeerimiskeel, mille Microsoft Corporation on välja töötanud 2000. aastal Java surmava konkurendina. See on kõige populaarsem ja domineeriv programmeerimiskeel nii veebiarenduse kui ka töölauarakenduste arendamise osas.

Selles C # õpetuses õpime järgmisi mõisteid.





C # põhitõed

C # programmeerimiskeele tutvustus

Veel 90ndate alguses oli Java veebiarenduse, töölauarakenduste arendamise ja paljude muude valdkondade juhtiv programmeerimiskeel. Microsoft soovis tulla konkurentsi, kellel on palju täiustatud funktsioone, mis võivad Java kaugele maha jätta.



C#-Tutorial-hejlsberg_bio

See oli aastal 2000, Anders Hejlsberg ja tema Microsofti meeskond pakkus välja idee C #, mida rahvasuus nimetatakse C-Sharpiks. Rahvusvaheline Standardiorganisatsioon kiitis selle algatuse heaks (SUUR) ja Euroopa arvutitootjate assotsiatsioon (ECMA). ja lõpuks jõuab C # tarkvaraarenduse maailma.

C # programmeerimiskeele tunnused



  • Objektorienteeritud programmeerimiskeel

Objektorienteeritud programmeerimise lähenemisviis on see, mis muudab C # terava programmeerimissõbralikumaks ning programmeerimiskeele hõlpsasti arendatavaks ja hooldatavaks.

  • Tüübisõbralik keel

Type-Safe tähendab, et kompilaatorile antakse juurdepääs ainult mälu asukohale, millel on luba käivitamiseks. See funktsioon parandab koodi turvalisust eksponentsiaalsele tasemele.

  • Koostalitlusvõime

Koostalitlusvõime funktsioon muudab C # piisavalt võimekaks, et teha kõike, mis on C ++ -le omane, tõhusamal viisil, mis suudaks C ++ -st endast üle tulla.

  • Rikas raamatukogu

C # pakub juurdepääsu mitmele sisseehitatud teekide arvule, mis pakuvad eelprogrammeeritud funktsioone, et vähendada arendusprotsessis kulutatud aega.

  • Skaleeritav ja värskendatav

C # oli kavandatud teiste programmeerimiskeelte seas paremaks. Seega on see alati värskendustele avatud ja see hoiab end oma funktsioonidega väga skaleeritav.

  • Komponendile orienteeritud

Microsofti arendajad kasutasid C # arendamiseks komponendipõhist lähenemist. See on kõige valdavam arendusmetoodika, et hoida C # väga skaleeritav ja uuendatud.

  • Struktureeritud keel

Struktureeritud programmeerimise lähenemist eelistatakse tarkvaraarenduse olelusringi jooksul, kuna tarkvara kompileerimise ja juurutamise arendamine on protseduurile orienteeritud programmeerimispõhimõttega võrreldes lihtne.

  • Kiire

C # Programmeerimine on kompileerimisel ja käivitamisel kiirem võrreldes C ++ ja teiste programmeerimiskeeltega.

Paigaldamine

On tõestatud, et Microsoft Visual Studio on C # programmeerimise jaoks klassi parim redaktor. Paigaldame ja seadistame Microsoft Visual Studio oma C # -programmide käivitamiseks järgides alltoodud samme:

Samm 1 : Laadige alla Microsoft Visual Studio

Google for uusim Visual Studio versioon ja laadige alla installima fail oma kohalikku süsteemi ja seejärel jooksma installifail kui an administraator.

2. samm: valige .NET töölaua arenduspakett

Kui installer on käivitatud, laaditakse Visual Studio Editor edukalt alla teie kohalikku süsteemi, hiljem kuvatakse teie töölaua ekraanil dialoogiboks, konkreetse paketi mida vajate oma süsteemis. Siin peate valima .NET töölauaarendus pakend.

3. samm: määrake C # Environment

Kui teie paketid on .NET-i arendus on alla laaditud, kuvatakse teie ekraanil veel üks dialoogiboks, kus küsitakse otsitavat arenduskeskkonda. Siin peate valige C # jaoks keskkond.

4. samm: looge oma esimene projekt

Kui keskkond on paika pandud, on teil kõigil hea minna. Käivitage Visual Studio ja valige luua uus projekt dialoogiboksis.

Teid suunatakse järgmisse dialoogiboksi ja seal peate valima klassi teegi .NET-standard nagu allpool näidatud.

Järgmises dialoogiboksis palutakse teil seda teha Konfigureerige oma projekt . Konfigureerige see ja olete nüüd redaktoris. Kirjutage oma esimene programm ja jooksma seda. Väljund kuvatakse edukalt Käsurida.

kasutades süsteemiklassi Edureka {static void Main (string [] args) {Console.WriteLine ('Tere tulemast Edurekasse!, Head õppimist ..!')}}

// Väljund:

Teostame oma esimese C # programmi.

C # programmi struktuur

Nüüd, kui oleme oma esimese C # programmi käivitanud, mõistame selle struktuuri üksikasjalikult. Lihtsal C # programmil on järgmised osad.

kasutades süsteemi nimeruumi ConsoleApplication1 {public class Edureka {public static void Main (string [] args) {Console.WriteLine ('Tere tulemast Edurekasse!, Head õppimist ..!')}}}

// Väljund:

Tere tulemast Edurekasse!, Head õppimist ..!

  • klass: klassi võib üldiselt määratleda kui a märksõna mida kasutatakse klassi määramiseks C # programmis.
  • Edureka: See on Klass. Tundi peetakse sageli kavandiks, mis salvestab klassiga seotud liikmed ja meetodid.
  • Peamine: Põhimõtteliselt on esmane meetod kogu C # programmist, see toimib väravana juhtnupule programmi sisenemiseks. See käivitatakse enne programmi mis tahes muu meetodi käivitamist.
  • kehtetu: See koodi segment on määratud tagastuse tüüp meetodi kohta. See võib olla mis tahes muu tüüpi andmetüüp kui tühine. Tühine tähendab, et meetodil pole andmeid, mida sellest tagastatakse.
  • staatiline: See on märksõna mis ütleb, et deklareeritud andmeliikmed on staatilised ja deklareeritud liikmetele on eraldatud eraldi mälu.
  • String [] väidab: See sarnaneb käsurea argumentidega, mida me oma programmis kasutame. Oma programmi täitmise ajal läbime mõned põhimõtteliselt argumendid, mille programm selle väite tõttu aktsepteerib.
  • System.Console.WriteLine (“Tere tulemast Edurekasse!, Head õppimist ..!”) Siin, Süsteem on nimeruum. Konsoolon see, et kategooria on välja toodudSüsteemi nimeruumis. The WriteLine () on seestaatilinetehnikakonsoolikategooria, mida kasutatakse allahindamisekstekst konsoolil.

Nüüd õppigem C #-s saadaolevaid andmetüüpe.

Andmetüübid

Allpool on kirjeldatud C # tüüpi andmetüübid kolme kategooriasse.

Väärtusandmete tüübid

The Väärtusandmete tüübid asuvad System.ValueType Teek ja on alati valmis neile otse juurde pääsema ning muutujaid saab otseselt määrata konkreetsele väärtusele. Väärtusandmete tüübid liigitatakse kaheks tüübiks, nagu allpool näidatud:

  • Eelnevalt määratletud andmetüübid
  • Kasutaja määratletud andmetüübid

Eelnevalt määratletud andmetüübid: Need on need, mida me tavaliselt oma igapäevases programmeerimises kasutame. Keelearendajad on need andmetüübid eelnevalt määratlenud ja neid hoitakse programmeerijate jaoks kasutamiseks valmis.

Näide:

int, float, char, lühike topelt jne

Kasutaja määratud andmetüübid: On olukordi, kus meil võib tekkida vajadus salvestada erinevad väärtused alates andmetüüpidest ühte muutujasse. Nendel juhtudel on Eelnevalt määratletud andmetüübid ei piisa ainult. Kasutaja määratud Andmetüübid on kasutaja jaoks nagu kohandatavad andmetüübid.

Näide: struktuur, Enum

Andmetüüp Eraldatud mälu ulatus Mälu suurus
allkirjastatud char -128 kuni 127 1 bait
allkirjastamata süsi 0 kuni 127 1 bait
char -128 kuni 127 1 bait
allkirjastatud lühike -32 768 kuni 32 767 2 baiti
allkirjastamata lühike 0 kuni 65 535 2 baiti
lühike -32 768 kuni 32 767 2 baiti
allkirjastatud int -2 147 483 648 kuni 2 147 483 647 4 baiti
allkirjastamata int 0 kuni 4 294 967 295 4 baiti
int -2 147 483 648 kuni 2 147 483 647 4 baiti
allkirjastatud pikk -9 223 372 036 854 775 808 kuni 9 223 372 036 854 775 807 8 baiti
allkirjastamata pikk 0 kuni 18 446 744 073 709 551 615 8 baiti
pikk -9 223 372 036 854 775 808 kuni 9 223 372 036 854 775 807 8 baiti
ujuk 1,5 * 10-45 - 3,4 * 1038, (7-kohaline täpsus) 4 baiti
topelt 5,0 * 10-324 - 1,7 * 10308, (15-kohaline täpsus) 8 baiti
kümnendkoht -7,9 * 10-28 - 7,9 * 1028, (28-kohaline täpsus) 16 baiti


Kursori andmetüüp

Pointer Type on lihtne andmetüüp. Selle funktsionaalsus on täiesti sarnane C-s olevate osutitega. Need on mõeldud teise osuti aadressi salvestamiseks.

ujuk * ptr

Viitedatüübid

Nimi on iseenesestmõistetav. The Viitedatüübid tegelikult ei salvesta muutujaid, vaid salvestavad selle konkreetse muutuja võrdlusväärtuse. Teisisõnu, nad salvestavad tegeliku muutuja aadressi.

Etalonmuutujad liigitatakse kolme eri tüüpi, nagu allpool mainitud:

  • Objekti tüüp

Objekti andmetüüp on saadaval Süsteem. Objekt Klass.Objekttüübidvõib ollamääratudväärtusedmuud tüübid,viidetüübid, eelnevalt määratletud, kasutaja määratletudtüübid. Aga enneülesanneväärtusi, nõuab see tüüp teisendamine.

objekt abc abc = 50 // seda nimetatakse poksiks
  • Dünaamiline tüüp

Dünaamilise tüübi muutujad on mõeldud peaaegu igat tüüpi väärtuste salvestamiseks. Seda nimetatakse dünaamiliseks tüübiks, kuna väärtuste tüübikontroll toimub jooksuajas

dünaamiline x = 10
  • Stringi tüüp

Stringi tüüp on saadaval keeles Süsteem. String klass. Stringitüüp on loodud string-literaalide salvestamiseks. String-literaale säilitatakse kahes vormiskahte vormi

    • tsiteeritud
    • @tsiteeritud.
String S = 'Edureka'
  • The @tsiteeritud stringi literaal näeb välja
@ 'Edureka'

Nüüd mõistame muutujaid.

Muutujad

Muutujad on mälu asukoha jaoks eraldatud nimed, mis talletavad kasutaja antud teatud andmeid ja millele on muutuja nime abil lihtne juurde pääseda. C #-s on saadaval viit tüüpi muutujaid

Tüüp Näide
Null Nullandmed
Boolean Õige ja vale
Täisarv Int, Char, Bait, Lühike, Pikk
Ujuk Ujuk ja kahekordne
Kümnendkoht Kümnendkoht

Näide:

int a, b topelt x ujuk p char abc

Reeglid, mida tuleb järgida C # muutujate deklareerimiseks

  • Muutuja võib sisaldada tähestikke, numbreid ja alakriipe.
  • Muutuja nimi võib alata ainult tähestiku või alakriipsuga.
  • Muutujaid ei saa alustada numbri või erimärgiga.
  • Muutuja nime vahel pole lubatud tühikuid.
  • Reserveeritud märksõnu ei tohi kasutada muutujate nimedena.

Operaatorid

Operaatorit saab määratleda spetsiaalse sümbolina, mis selgitab arvutit konkreetse matemaatika on loogiline toiming muutujate hulga alusel. C # sisaldab mitmesuguseid operaatoreid, mida on nimetatud allpool.

  • Aritmeetikaoperaatorid
  • Suheteoperaatorid
  • Loogilised operaatorid
  • Bitipõhised operaatorid
  • Ülesandeoperaatorid

Aritmeetikaoperaatorid

Operaator Näide Kirjeldus
+ A + B Lisab kaks operandi
- A - B Lahutab kaks operandi
* A * B Korrutab kaks operandi
/ A / B Jagab kaks operandi
% A% B Ülejäänud kaks operandit
++ A ++ Lisajuhtimine
- TO- Vähendustoiming

Suheteoperaatorid

Operaator Näide Kirjeldus
== A == B Tõsi, kui mõlemad operandid on võrdsed, siis muu vale
! = A! = B Tõsi, kui mõlemad operandid pole võrdsed, siis muu vale
> A> B Tõsi, kui A on suurem, siis muu vale
< TO Tõsi, kui B on suurem, siis muu vale
> = A> = B Tõsi, kui A on suurem või võrdne, siis muu vale
<= TO<= B Tõsi, ID B on suurem võrdne, muu vale

Loogilised operaatorid

Operaator Näide Kirjeldus
&& A && B Tõsi, kui mõlemad operandid vastavad tõele, siis muu vale
|| A || B Tõsi, kui üks operandidest on tõene, siis muu vale
! A! B Pöörab tagasi operandi loogilise oleku

Bitipõhised operaatorid

TO B A ja B A | B A ^ B
üks üks üks üks 0
üks 0 0 üks üks
0 üks 0 üks üks
0 0 0 0 0
Operaator Näide Kirjeldus
~ (~ A) Binaarse üksuse täiendusoperaator on unaarne ja sellel on bittide ümberpööramine.
<< TO<<2 Binaarne vasakpoolse vahetuse operaator. Vasakpoolsete operandide väärtus liigutatakse vasakule parempoolse operandi määratud bittide arvuga.
>> A >> 2 Binaarne parempoolse vahetuse operaator. Vasaku operandi väärtust liigutatakse paremale parempoolse operandi määratud bittide arvu võrra.

Ülesandeoperaatorid

Operaator Näide Kirjeldus
= A = B + C A = B + C, B + C on määratud A-le
+ = A + = B A = A + B, A + B on määratud A-le
- = A - = B A = A-B, A-B on määratud A-le
* = A - = B A = A * B, A * B on määratud A-le
/ = A / = B A = A / B, A / B on määratud A-le
% = A% = B A = A% B, A% B on määratud A-le
<<= TO<<= 2 Vasaku vahetuse ja määramise operaator
>> = A >> = 2 Parema vahetuse ja määramise operaator
& = A & = 2 Pikkade kaupa ja omistamise operaator
^ = A ^ = 2 Bititi eksklusiivne ja omistamise operaator
| = A! = 2 Bitipõhine kaasav operaator

Silmused

TO silmus lauset kasutatakse lauseploki korduvaks täitmiseks, kuni konkreetne tingimus on täidetud. C # keel koosneb järgmistest aaselausetest.

  • Loopi jaoks
  • Kuigi Loop
  • Tehke silmuse ajal

Loopi jaoks

The silmuse jaoks kasutatakse konkreetse koodisegmendi käivitamiseks mitu korda, kuni antud tingimus on täidetud.

Süntaks

for (initsialiseerimistingimuse juurdekasv / vähenemine) {// koodisegment}

Vooskeem:

Näide:

kasutades süsteemi avalik klass ForExample {public static void Main (string [] args) {for (int i = 1 i<= 5 i++) { Console.WriteLine(i) } } } 

// Väljund:

üks
2
3
4
5

Kuigi Loop

The Kuigi silmus kasutatakse koodisegmendi käivitamiseks mitu korda, kuni konkreetne tingimus on täidetud.

Süntaks

while (tingimus) {// käivitatav kood}

Vooskeem:

Näide:

kasutades süsteemi nimeruumi Loops {klass Programm {static void Main (string [] args) {int x = 5 while (x<= 10) { Console.WriteLine('The value of a: {0}', x) x++ } Console.ReadLine() } } } 

// Väljund:

A väärtus: 5
A väärtus: 6
A väärtus: 7
A väärtus: 8
A väärtus: 9
A väärtus: 10

Tehke silmuse ajal

Rakendus Do while on täiesti sarnane While Loopiga, kuid ainus erinevus on see, et tingimus asetatakse silmuse lõppu. Seega käivitatakse tsükkel vähemalt üks kord.

Süntaks

tee {// kood täidetavaks} while (tingimus)

Vooskeem:

Näide:

kasutades süsteemi nimeruumi 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, toode) i ++} samas (i<= 10) } } } 

// Väljund:

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

Tingimuslik

Tingimuslikud avaldused kasutatakse täitmiseks avaldus või nende rühm avaldused põhineb mõnel tingimusel. Kui seisund on tõsi siis C # avaldused täidetakse muidu järgmine avaldus hukatakse.

Eri tüüpi tingimuslausete tüübid C ++ keeles on järgmised:

  1. Kui avaldus
  2. If-Else avaldus
  3. Pesastatud If-else avaldus
  4. If-Muidu If redel
  5. Lüliti lause

Kui avaldus

Singel kui lause C # keeles kasutatakse koodi täitmiseks, kui tingimus on tõene. Seda nimetatakse ka ühesuunaliseks valikulauseks.

Süntaks

if (tõeväärtuse avaldis) {// laused täidetakse, kui tõeväärtus on tõene}

Vooskeem:

Näide:

süsteemi nimeruumi kasutamine Tingimuslik {class IfStatement {public static void Main (string [] args) {int number = 2 if (number<5) { Console.WriteLine('{0} is less than 5', number) } Console.WriteLine('This statement is always executed.') } } } 

// Väljund:

2 on väiksem kui 5
See lause täidetakse alati.

If-Else avaldus

The kui-veel lauset C-keeles kasutatakse koodi käivitamiseks, kui tingimus on tõene või väär. Seda nimetatakse ka kahesuunaliseks valikuavalduseks.

Süntaks

if (tõeväärtuse avaldis) {// käskud täidetud, kui tõeväärtuse avaldis on tõene} muud {// käskud täidetud, kui tõeväärtuse avaldis on vale}

Vooskeem:

Näide:

süsteemi nimeruumi kasutamine Tingimuslik {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.') } } } 

// Väljund:

12 on suurem või võrdne 5-ga
See lause täidetakse alati.

Pesastatud If-else avaldus

Pesastatud kui-veel lauset kasutatakse juhul, kui programm nõuab mitut testväljendit. Seda nimetatakse ka mitmepoolseks valikulauseks. Kui avaldusse on kaasatud rida otsust, kasutame kui-veel avaldus pesastatud kujul.

Süntaks

if (boolean-avaldis) {if (sisestatud-avaldis-1) {// käivitatav kood} muu {// täidetav kood}} veel {if (sisestatud-avaldis-2) {// käivitatav kood } muu {// käivitatav kood}}}

Vooskeem:

Näide:

süsteemi nimeruumi kasutamine Tingimuslik {klass Nested {public static void Main (string [] args) {int esimene = 7, teine ​​= -23, kolmas = 13 if (esimene & gt sekund) {if (esimene

// Väljund:

13 on suurim

Muidu kui Redel

The kui-veel-kui lauset kasutatakse ühe koodi käivitamiseks mitmest tingimusest. Seda nimetatakse ka mitme tee otsuste avalduseks. See on if..else lausete ahel, milles iga if-lause on seotud else if-lause ja last-ga oleks muu lause.

Süntaks

if (tingimus1) {// kood, mis tuleb täita, kui tingimus1 on tõene} muu kui (tingimus2) {// täidetav kood, kui tingimus2 on tõene} muu kui (tingimus3) {// täidetav kood, kui tingimus 3 on tõene} ... else {// kood täidetakse, kui kõik tingimused on valed}

Vooskeem:

Näide:

kasutades süsteemiklassi 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 pole kohal ')}}

// Väljund:

i on 20

Lüliti lause

Lüliti lause toimib pikkade kui-kui-kui-redelite asendajana, mida kasutatakse juhtumite loendi testimiseks. Lüliti lause sisaldab ühte või mitut juhtumilipikut, mida testitakse lüliti avaldise suhtes. Kui avaldis sobib juhtumiga, täidetakse selle juhtumiga seotud avaldused.

Süntaks

lüliti (muutuja / avaldis) {juhtumi väärtus1: // avaldused täidetakse, kui avaldis (või muutuja) = väärtus1 katkestuse juhtumi väärtus2: // avaldused täidetakse, kui avaldis (või muutuja) = väärtus1 katkestus ... ... ... .. . ... ... vaikimisi: // Laused täidetakse, kui ükski juhtum ei sobi}

Vooskeem:

Näide:

süsteemi nimeruumi kasutamine Tingimuslik {class SwitchCase {public static void Main (string [] args) {char ch Console.WriteLine ('Sisesta tähestik') ch = Convert.ToChar (Console.ReadLine ()) lüliti (Char.ToLower (ch )) {case 'a': Console.WriteLine ('Vowel') break case 'e': Console.WriteLine ('Vowel') break case 'i': Console.WriteLine ('Vokaal') break case 'o': Konsooli.WriteLine ('Vokaal') murde algustäht 'u': Konsooli.WriteLine ('Vokaal') murde vaikeväärtus: Konsooli.WriteLine ('Pole vokaal') katkestus}}}}

// Väljund:

Sisestage tähestik
on
Täishäälik

Keelpillid

String Andmetüüp on domeeni liige Süsteem. String Klass. See on võimeline salvestama märkide tüüpi andmeid. Saame teha mitmesuguseid operatsioone Stings'il, näiteksliitmine, võrdlemine, alamstringide hankimine, otsimine, kärpimine, asendamine ja palju muud.

Stringi ja stringi analoogia

C # -is String ja string on samaväärsed. Sõna string on a märksõna ja toimib Süsteem. String klass. Stringide deklareerimiseks võime kasutada üht või teist versiooni.

Süntaks:

string s1 = 'Edureka' // stringi loomine stringi märksõna abil String s2 = 'Happy Learning' // stringi loomine stringi klassi abil

Näide:

kasutades süsteemi avalik klass 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 '} string s2 = uus string (ch) Console.WriteLine ( s1) Console.WriteLine (s2)}}

// Väljund:

Edureka
Csharpi õpetus

Stringimeetodid C #

Meetod Kirjeldus
Kloon () Kasutatakse selle stringi eksemplari viite tagastamiseks.
Võrdle (string, string) Kasutatakse kahe määratud stringi objekti võrdlemiseks.
Konkat (string, string) Liitke kaks määratud stringi eksemplari.
Sisaldab (stringi) Tagastab väärtuse, mis näitab määratud alamstringi
Kopeeri (string) Kasutatakse sama väärtusega uue stringi eksemplari loomiseks
CopyTo (keskmine, täht [], keskmine, keskmine) Kopeerib märke määratud positsioonilt
Võrdsed (string, string) Määrab, et kahel stringi objektil on sama väärtus.
Vorming (string, objekt) Määratud stringis asendage üks või mitu vorminguüksust
IndexOf (string) Teatab esimese esinemise nullipõhise indeksi
Sisesta (Int32, string) Tagastab uue stringi, milles string on sisestatud indeksisse.
IsInterned (string) Näitab, et see string on Unicode'i normaliseerimisvormis C.
IsNullOrEmpty (string) Näitab, et määratud string on null või tühi string.
IsNullOrWhiteSpace (string) Kasutatakse näitamaks, kas määratud string on null, tühi,
Liitu (string, string []) Kasutatakse stringimassiivi kõigi elementide liitmiseks
LastIndexOf (Char) Teatab viimase märgi nullipõhise indeksi asukoha
LastIndexOfAny (Char []) Teatab viimase märgi nullipõhise indeksi asukoha
Eemalda (Int32) Tagastab uue stringi, milles on kõik märgid
Asenda (string, string) Tagastab uue stringi, milles kõik stringi esinemised
Split (Char []) Seda kasutatakse stringi jagamiseks alamstringideks
Alustab (stringiga) Seda kasutatakse selle stringi alguse kontrollimiseks
Alamstring (Int32) Seda kasutatakse alamstringi hankimiseks sellest eksemplarist.
ToCharArray () Kopeerib selle eksemplari tähemärgid Unicode'i massiivi.
ToString () Seda kasutatakse stringi eksemplari tagastamiseks.
Kärpimine () Kärbib nööri


Massiivid

Sarnaselt teistele programmeerimiskeeltele on ka C # -il massiivid. Massiivid on lihtsad andmestruktuurid, mis on loodud elementide sama andmetüübi salvestamiseks külgnevas mäluasendis.

C # toetab järgmisi massiivitüüpe.

  • Ühemõõtmeline massiiv
  • Mitmemõõtmeline massiiv
  • Jagged Array

Ühemõõtmeline massiiv

Ühemõõtmeline massiiv salvestab elemendid ühe rea kujul.

Süntaks

int [] arr = new int [5] // massiivi loomine

Näide:

kasutades süsteemi 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 (int i = 0 i 

// Väljund:

10
kakskümmend
30
40
viiskümmend

Mitmemõõtmeline massiiv

Mitmemõõtmeline massiiv salvestab elemendid mitmemõõtmelisena nagu maatriks ja kuup jne.

Süntaks

int val = a [2,3]

Näide:

kasutades süsteemi nimeruumi 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() } } } 

// Väljund:

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 lihtsalt massiivide massiiv.

Näide:

kasutades süsteemi nimeruumi ArrayApplication {class MyArray {static void Main (string [] args) {int [] [] a = new int [] [] {new int [] {0,0}, new int [] {1,2 }, uus int [] {2,4}, uus int [] {3, 6}, uus int [] {4, 8}} int i, j jaoks (i = 0 i<5 i++) { for (j = 0 j < 2 j++) { Console.WriteLine('a[{0}][{1}] = {2}', i, j, a[i][j]) } } Console.ReadKey() } } } 

// Väljund:

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

Kogud

Kogumist võib pidada lihtsalt koos kogutud objektide rühmaks, et rakendada kogutud andmetele mõningaid funktsioone. Toimingud, mida ükskord võib koguga läbi viia, on

  • poe objekt
  • objekti värskendamine
  • objekti kustutamine
  • objekti hankimine
  • otsida objekti ja
  • objekti sortimine

Kogude tüübid

Kollektsioonidega töötamiseks on kolm erinevat võimalust. Kolm nimeruumi on nimetatud allpool:

  • Süsteem. Kogud. Üldine klassides
  • Süsteem. Kogud klassides
  • System.Collections.Concurrent klassides

Klassil System.Collections.Generic on järgmised klasside sordid:

  • Nimekiri
  • Virn
  • Järjekord
  • LinkedList
  • HashSet
  • SortedSet
  • Sõnastik
  • Sorditud sõnastik
  • SortedList

The Süsteem. Kogud klassid loetakse pärandklassideks. nende hulka kuuluvad järgmised klassid.

  • ArrayList
  • Virn
  • Järjekord
  • Hashtable

The System.Collections.Concurrent klassidesnimeruum pakub klasse niiditurvalistele toimingutele. Nüüd ei tekita mitu lõime kollektsiooni üksustele juurdepääsemisel probleemi. selles pakutavad klassid on

  • BlockingCollection
  • Samaaegne kott
  • Samaaegne virn
  • Samaaegne järjekord
  • Samaaegne sõnastik
  • Vaheseinad
  • Vaheseinad
  • OrderablePartitioner

Nimekiri

The nimekirja loetakse aastal 2006 kättesaadavaks andmestruktuuriks System.Collection.Generics nimeruum. See suudab elemente salvestada ja tuua. Loendis on võimalik dubleerida elemente.

Näide:

süsteemi abil 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') nimed. Lisage ('Kiran') foreach (muutuja nimi nimedes) {Console.WriteLine (nimi)}}}

// Väljund:

Sandhya
Arun
Prashanth
Kiran

Räsi komplekt

C # HashSetkategooria on sageli harjunudpood,ära võtmavõiloe komponente. Seeei teepoe duplikaatkomponendid.see on tungivkasutada HashSet kategooriakuisul onpoodiainult eristav komponendid . see on leitud System.Collections.Generic nimeruumist.

Näide:

süsteemi abil 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') nimed. Lisage ('Imran') nimed. Lisage ('karan') foreach (var nimed nimedes) {Console.WriteLine (nimi)}}}

// Väljund:

Sunil
Amar
Pujari
Imran
karan

Sorteeritud komplekt

C # SortedSetklass on sageli harjunudpood, eemalda või lugeda elemendid . See hoiab ülenevat järjekorda jaei teepoe duplikaatelemendid.see on kiireSortedSeti kasutamisekskategooriakuisul onpoodi eristav komponendid ja hoida ülenevat järjekorda.see onleitud System.Collections.Generic nimeruumist.

Näide:

süsteemi abil 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') nimed. Lisage ('Ravi') nimed. Lisage ('Kajol') foreach (var nimed nimedes) {Console.WriteLine (nimi)}}}

// Väljund:

Anuradha
Kajol
Praveen
Ravi
Sanjay

Virn

The virn on lihtne kogu, mis järgneb EDGE või esimesena viimasena välja töötlemise protsess samal ajal sinna salvestatud elementide töötlemisel.

Näide:

süsteemi abil 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') nimed. Push ('Rajesh') nimed. Push ('kumar') foreach (stringi nimi nimedes) {Console.WriteLine (name)} Console.WriteLine ('Peek element:' + names.Peek () ) Console.WriteLine ('Pop:' + nimed.Pop ()) Console.WriteLine ('Popi järgselt Peek element:' + nimed.Peek ())}}

// Väljund:

kumar
Rajesh
James
Pooja
Chandan
Peek element: kumar
Pop: kumar
Popi, Peeki järgi element: Rajesh

Järjekord

Järjekord on täiesti sarnane Stackiga, kuid ainus erinevus on see, et järjekord järgneb FIFO või põhimõttel esimene sisse ja esimene välja, töötledes samal ajal sinna salvestatud elemente.

Näide:

süsteemi abil 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') nimed. Enqueue ('Raju') nimed. Enqueue ('Hari') foreach (stringi nimi nimedes) {Console.WriteLine (nimi)} Console.WriteLine ('Peek element:' + nimed.Peek () ) Console.WriteLine ('Dequeue:' + nimed.Dequeue ()) Console.WriteLine ('After Dequeue, Peek element:' + nimed.Peek ())}}

// Väljund:

Srujan
Prajat
John
Äge
Päev
Peek element: Srujan
Dequeue: Srujan
Pärast Dequeue, Peek element: Prajat

Lingitud loend

Lingitud loend on dünaamiline mälukogu. Lingitud loendi elemendid salvestatakse hunnikust mälu juurde pääsemisel ja elementide pidevas järjestuses nende aadresside linkimise abil.

Näide:

süsteemi abil 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') nimed. AddLast ('pasknäär') nimed. AddFirst ('sai') foreach (varide nimedes) {Console.WriteLine (nimi)}}}

// Väljund:

sai
Piirid
Arun
Prakash
pasknäär

Sõnastik

Sõnastik kategooriakasutabideehashtable'i. See salvestab väärtusedeeldusvõtme. See sisaldaberistavvõtmeidainult. Kõrvalabivõtmest,me lihtsaltotsida võielemente ära võtma.see onleitud System.Collections.Generic nimeruumist.

Näide:

süsteemi abil System.Collections.Generic public class Edureka {public static void Main (string [] args) {Dictionary names = new Dictionary () names. Add ('1', 'Shiva') names.Add ('2', 'Prasad') nimed. Lisage ('3', 'Preetam') nimed. Lisage ('4', 'Roy') nimed. Lisage foreach ('5', 'Akash') foreach (nimedes KeyValuePair kv) {Konsool. WriteLine (kv.Key + '' + kv.Value)}}}

// Väljund:

1 Šiva
2 Prasad
3 Preetam
4 Roy
5Akash

Sorditud sõnastik

The Sorditud sõnastik kategooriakasutabkujundushashtable'i. See salvestab väärtusedIdeevõtme. See sisaldaberistavvõtmeid ja hoiab peal kasvavat järjekordaIdeevõtme. Kõrvalabivõtmest,me lihtsaltotsida võielemente ära võtma.see onleitud System.Collections.Generic nimeruumist.

Näide:

süsteemi abil System.Collections.Generic public class Edureka {public static void Main (string [] args) {SortedDictionary names = new SortedDictionary () names. Add ('1', 'Arun') names.Add ('4', 'Vishal') nimed. Lisage ('5', 'Ramesh') nimed. Lisage ('3', 'Vidya') nimesid. Lisage foreach ('2', 'Pallavi') foreach (nimedes KeyValuePair kv) {Konsool. WriteLine (kv.Key + '' + kv.Value)}}}

// Väljund:

1 Šiva
2 Prasad
3 Preetam
4 Roy
5Akash

Sorteeritud loend

The SortedList onanvõti / väärtus paaride massiiv. See salvestab väärtusedeeldusvõtme. Sorteeritud loendkategooriasisaldaberistavvõtmeid ja hoiab peal kasvavat järjekordaeeldusvõtme. Kõrvalabivõtmest,oleme võimelised lihtsaltotsige või eemaldageelemendid.see onleitud Süsteem. Kogud. Üldine nimeruum.

Näide:

süsteemi abil System.Collections.Generic public class Edureka {public static void Main (string [] args) {SortedDictionary names = new SortedDictionary () names. Add ('1', 'Arun') names.Add ('4', 'Vishal') nimed. Lisage ('5', 'Ramesh') nimed. Lisage ('3', 'Vidya') nimesid. Lisage foreach ('2', 'Pallavi') foreach (nimedes KeyValuePair kv) {Konsool. WriteLine (kv.Key + '' + kv.Value)}}}

// Väljund:

1 Arun
2 Pallavi
3 Vidya
4 Vishal
5Ramesh

Struktuur

Struktuur on kasutaja määratletud andmetüüp, mis on mõeldud erinevate andmetüüpide mitme elemendi salvestamiseks. Struktuur deklareeritakse märksõna abil struktuur.

Näide:

süsteemi struktuuriraamatute kasutamine {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 ++ programmeerimise õpetus 'Book1.book_id = 95908978 Book2.title =' Telekommunikatsiooni arveldus 'Book2.author =' Karan 'Book2.subject =' Telekommunikatsiooni arvelduse õpetus 'Book2.book_id = 18674900 Console.WriteLine ( „1. raamatu pealkiri: {0}”, „Book1.title”) Console.WriteLine ('1. raamatu autor: {0}', Book1.author) Console.WriteLine ('1. raamatu teema: {0}', Book1.subject) Console.WriteLine ('Book 1 book_id: {0}', Book1.book_id) Console.WriteLine ('2. raamatu pealkiri: {0}', Book2.title) Console.WriteLine ('2. raamatu autor: {0}', Book2.author) Console.WriteLine ('2. raamatu teema: {0}', Book2.subject) Console.WriteLine ('2. raamat Book_id: {0}', Book2.book_id) Console.ReadKey ()}}

// Väljund:

1. raamatu pealkiri: C # programmeerimine
1. raamat Autor: Ramchandra Kumar
1. raamatu teema: C ++ programmeerimise õpetus
1. raamat book_id: 95908978
2. raamatu pealkiri: Telekommunikatsiooni arveldamine
2. raamat Autor: Karan
2. raamatu teema: telekommunikatsiooni arvelduse õpetus
2. raamat book_id: 18674900

Funktsioonid

Funktsioon on määratletud kui põhikoodi koodiplokk. Funktsiooni kasutatakse koodiplokis määratud lausete täitmiseks. Funktsioon koosneb järgmistest komponentidest.

  • Funktsiooni nimi: See on eristav nimi, mida kasutatakse funktsioonikõne tegemiseks.
  • Tagastuse tüüp: See määrab funktsiooni tagastatava väärtuse andmetüübi.
  • Keha: See sisaldab käivitatavaid avaldusi.
  • Juurdepääsu täpsustaja: See täpsustab funktsioonide juurdepääsetavust rakenduses.
  • Parameetrid: See on loetelu argumentidest, mille saame kõne ajal funktsioonile edastada.

Süntaks

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

Näide:

kasutades süsteemi nimeruumi FunktsioonNäide {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 . Näita ('Edurekale') konsooli. WriteLine ('Tere tulemast' + sõnum)}}}

// Väljund:

Näituse funktsioon
Tere tulemast Edurekasse

Funktsioone saab täita kolmel erineval viisil:

  • Kõne väärtuse järgi
  • Kõne viitega
  • Välja parameeter

Kõne väärtuse järgi

C #, väärtus -tüüp parameetridonsee passkoopiaalgväärtusegafunktsiooni asemelviide. Seeei teemuutmaesimene väärtus. Anmuudatus loodudmöödunudväärtus ei oleVanuskonkreetne väärtus.piiresjärgmine näidemeil onüle andmaväärtus kogu ulatuseshelistama.

Näide:

kasutades süsteemi nimeruumi CallByValue {class Edureka {public void Show (int val) {val * = val Console.WriteLine ('Show function inside the value' + val)} staatiline void Main (string [] args) {int val = 50 Edureka programm = uus Edureka () Console.WriteLine ('Väärtus enne funktsiooni kutsumist' + val) programmi. Näita (val) Console.WriteLine ('Väärtus pärast funktsiooni kutsumist' + val)}}}

// Väljund:

Väärtus enne funktsiooni 50 kutsumist
Esitusfunktsiooni väärtus 2500
Väärtus pärast funktsiooni 50 kutsumist

Kõne viitega

Menüüs Kõne viite järgikuni viide märksõna argumendi edastamiseks viitetüübina. See suunab argumentide viite pigem funktsioonile kui algse väärtuse koopiale. Läbitud väärtuste muutused on püsivad ja muutma algne muutuja väärtus.

Näide:

kasutades süsteemi nimeruumi CallByReference {class Edureka {public void Show (ref int val) {val * = val Console.WriteLine ('Show function inside the value' + val)} static void Main (string [] args) {int val = 50 Edureka programm = uus Edureka () Console.WriteLine ('Väärtus enne funktsiooni kutsumist' + val) programmi. Näita (ref val) Console.WriteLine ('Väärtus pärast funktsiooni kutsumist' + val)}}}

// Väljund:

Väärtus enne funktsiooni 50 kutsumist
Esitusfunktsiooni väärtus 2500
Väärtus pärast funktsiooni 2500 kutsumist

Välja parameeter

Välja parameeterannab välja märksõna, et edastada argumente out-type-na. See on nagu viitetüüp, ainult et see ei nõua muutuja initsialiseerimist enne möödumist. Me peame kasutama välja märksõna argumendi edastamiseks väljundina. See on kasulik, kui tahame, et funktsioon tagastaks mitu väärtust.

Näide:

kasutades süsteemi nimeruumi 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 ('Väärtus enne muutuja' + val väljaandmist '. Show (out val) Console.WriteLine (' Väärtus pärast muutuja välja saamist '+ val)}}}

// Väljund:

Väärtus enne muutuja 50 väljaandmist

minge jaotisse c ++

Väärtuspärast väljamuutuja 25 saamist

Nüüd liigume objektile orienteeritud programmeerimise juurde

Objektorienteeritud programmeerimine

Objektorienteeritud programmeerimine Süsteemon kontseptsioonil põhinev programmeerimisparadigma objektid mis sisaldavad andmeliikmed ja meetodid nendega seotud. Objektorienteeritud programmeerimise esmane eesmärk on suurendada programmide paindlikkust ja hooldatavust

Objektorienteeritud programmeerimise tunnused:

  • Selles rõhutatakse rohkem andmeid kui protseduure.
  • Programmid on jagatud objektideks, mis muudab nende töö lihtsaks.
  • Andmestruktuurid on loodud nii, et need iseloomustaksid objekte.
  • Toimivad funktsioonid pealobjekti andmed paigutatakse koos andmestruktuuri.
  • Andmed on peidetud ja neile ei pääse väliste funktsioonide kaudu ilma loata juurde.
  • Objektidevaheline suhtlus võib toimuda funktsioonide abil.
  • Uute andmete ja funktsioonide lisamine on muutunud lihtsaks.
  • Järgib programmi kujundamisel alt üles lähenemist.

Objektile orienteeritud paradigmad C #-s on järgmised

Loend C #

Enum või kutsutakse ka kui loendamine C # -s kasutatakse püsiväärtuste salvestamiseks ilma, et peaksite neid kogu C # programmi täitmise ajal muutma. Seekasutatakse nimega konstantide, näiteks aastaaeg, päevad, kuu, suurus jne, salvestamiseks

Näide:

kasutades süsteemi avalik klass EnumExample {public enum week {esmaspäev, teisipäev, kolmapäev, neljapäev, reede, laupäev, pühapäev} public static void Main () {int x = (int) nädal. Esmaspäev int y = (int) nädal. Reede konsool .WriteLine ('esmaspäev = {0}', x) konsool. WriteLine ('reede = {0}', y)}}

// Väljund:

Esmaspäev = 0
Reede = 4

Objektorienteeritud programmeerimise lähenemine

Objektorienteeritud programmeerimisstiili saab saavutada järgmiste meetodite järgi.

Kapseldamine

Kapseldamine on meetod ühendada meetodid koos nende andmeliikmed.

Näide:

kasutades süsteemi nimeruumi Edureka {klass Ristkülik {public double length public double width public double GetArea () {return length * width} public void Display () {Console.WriteLine ('Length: {0}', length) Console.WriteLine (' Laius: {0} ', laius) Console.WriteLine (' Area: {0} ', GetArea ())}} class ExecuteRectangle {static void Main (string [] args) {Rectangle r = new Rectangle () r.length = 50 r.laius = 35 r.Display () konsool.ReadLine ()}}}

// Väljund:

Pikkus: 50
Laius: 35
Pindala: 1750

Abstraktsioon

Abstraktsioon on meetod selleks peida kasutaja keerukas kodeerimisosa, andes talle ainult vajaliku teabe.

Näide:

kasutades süsteemi avalik abstraktklass Kuju {public abstract void draw ()} public class Rectangle: Shape {public override void draw () {Console.WriteLine ('drawing rectangle ...')}}} public class Circle: Shape {public override void draw () {Console.WriteLine ('joonistusring ...')}} public class TestAbstract {public static void Main () {Shape ss = new Rectangle () s.draw () s = new Circle () s.draw ()}}

// Väljund:

ristküliku joonistamine ...
joonistusring ...

Liides

The liides on täiesti sarnane Abstraktsiooniga. Liidese funktsionaalsus on peita ebaolulised andmed kasutaja eest ja edastada talle ainsad vajalikud andmed.

Näide:

süsteemi avaliku liidese abil Drawable {void draw ()} public class Rectangle: Drawable {public void draw () {Console.WriteLine ('drawing rectangle ...')}} public class Circle: Drawable {public void draw () {Console .WriteLine ('joonistusring ...')}} public class TestInterface {public static void Main () {Joonistatav dd = uus ristkülik () d.draw () d = uus ring () d.draw ()}}

// Väljund:

ristküliku joonistamine ...
joonistusring ...

Polümorfism

Polümorfismon kombinatsioon 'Polü' + 'Morphs' mis tähendab paljusid vorme. See on kreeka sõna. See tähendab, et koodilõigul võib olla mitu vormi. Meil on kahte tüüpi polümorfismi.

  • Koostage ajapolümorfism
  • Jooksuaegne polümorfism

Näide:

kasutades süsteemi 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ärv)}}

// Väljund:

valge

Pärand

Pärand on protsess, mille käigus üks objekt omandab kõik oma emaobjekti omadused ja käitumise automaatselt. Teises klassis määratletud atribuute ja käitumist saate uuesti kasutada, laiendada või muuta. nimetatakse klassi, mis pärib teise klassi liikmed tuletatud klass ja klassi, mille liikmed on päritud, nimetatakse klassiks alus klass. Tuletatud klass on baasklassi spetsialiseeritud klass.

Näide ühetasandilisest pärandist

kasutades süsteemi nimeruumi RectangleApplication {class Rectangle {kaitstud topeltpikkusega kaitstud topeltlaius public Rectangle (double l, double w) {length = l width = w} public double GetArea () {return length * width} public void Display () {Console. WriteLine ('Pikkus: {0}', pikkus) Console.WriteLine ('Width: {0}', width) Console.WriteLine ('Area: {0}', GetArea ())}} klassi klass Tabletop: Ristkülik {private topeltkuludega avalik lauaplaat (topelt l, topelt w): alus (l, w) {} public double GetCost () {double cost cost = GetArea () * 70 return cost} public void Display () {base.Display () Console .WriteLine ('Cost: {0}', GetCost ())}}} klass ExecuteRectangle {staatiline void Main (string [] args) {Tabletop t = uus Tabletop (4.5, 7.5) t.Display () Console.ReadLine () }}}

// Väljund:

Pikkus: 4.5
Laius: 7,5
Pindala: 33,75
Maksumus: 2362,5

Näide mitmetasandilisest pärandist

kasutades süsteemi nimeruumi InheritanceApplication {class Shape {public void setWidth (int w) {width = w} public void setHeight (int h) {height = h} kaitstud int laius kaitstud int height} avalik liides PaintCost {int getCost (int area)} klassi ristkülik: kuju, PaintCost {public int getArea () {return (width * height)} public int getCost (int area) {return area * 70}} class RectangleTester {static void Main (string [] args) {Rectangle Rect = uus Ristkülik () int-ala Rect.setWidth (5) Rect.setHeight (7) piirkond = Rect.getArea () Console.WriteLine ('Kogupind: {0}', Rect.getArea ()) Console.WriteLine ('Kokku värvi maksumus: $ {0} ', Rect.getCost (piirkond)) konsool.ReadKey ()}}}

// Väljund:

Üldpind: 35
Värvi kogukulu: 2450 dollarit

Ülekoormus

Ülekoormus on olukord, kus meil on kaks või sama nime kasutanud liige. Ülekoormus on võimalik ka siis, kui kuulutame välja kaks või enam sama nimega meetodit. Kontrollime mõlema näiteid.

Liikme ülekoormus

Näide:

kasutades süsteemi avalik klass Edureka {public static int add (int a, int b) {return a + b} public staatiline int add (int a, int b, int c) {return a + b + c}} public class TestMemberOerloading { avalik staatiline void Main () {Console.WriteLine (Edureka.add (12, 23)) Console.WriteLine (Edureka.add (12, 23, 25))}}

// Väljund:

35
60

Meetod Ülekoormus

Näide:

kasutades süsteemi avalik klass 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 TestMemberOerloading {public static void Main ( ) {Console.WriteLine (Edureka.add (12, 23)) Console.WriteLine (Edureka.add (12.4f, 21.3f))}}

// Väljund:

35
33.699997

Ülimuslik

Ülekaal on olukord, kus lasteklass määratleb sama meetodi, mida määratleb ka vanem. Mõistkem sellest väikese näite kaudu.

Näide:

kasutades süsteemi 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 () {Koer d = uus Koer () d.eat ()}}

// Väljund:

Toitu sööma

Nimeruum

The nimeruum kasutatakse põhimõtteliselt mitme programmis esineva klassi käsitlemiseks. Nimeruum on saadaval mitmel viisil.

  • Süsteem. Konsool: Siin, Süsteem saab nimeruumiks
  • Nimeruumi klassi juurde pääsemiseks peame kasutama nimenimi.klassinimi.
  • Saame kasutada kasutades märksõna samuti.

Näide:

süsteemi kasutamine, kasutades esimest, kasutades teist nimeruumi, esimene {public class Edureka {public void sayWelcome () {Console.WriteLine ('Welcome to Edureka')}}}} nimeruum Teine {public class Happy_Learning {public void sayWishes () {Console.WriteLine (' Head õppimist ')}}} avaliku klassi nimeruum {public static void Main () {Edureka h1 = new Edureka () Happy_Learning w1 = new Happy_Learning () h1.sayWelcome () w1.sayWishes ()}}

// Väljund:

Tere tulemast Edurekasse
Head õppimist

Failitoimingud

The faili toimingud saadaval C-s on järgmised:

Operatsioon Kirjeldus
BinaryReader Loeb primitiivseid andmeid kahendvoolust.
BinaryWriter Kirjutab primitiivsed andmed kahendvormingus.
Puhverdatud voog Baitide voo ajutine salvestusruum.
Kataloog Aitab kataloogistruktuuriga manipuleerimisel.
DirectoryInfo Kasutatakse kataloogides toimingute tegemiseks.
DriveInfo Pakub draividele teavet.
Fail Aitab failidega manipuleerimisel.
FileInfo Kasutatakse failidega toimingute tegemiseks.
FileStream Kasutatakse faili mis tahes asukohta lugemiseks ja sinna kirjutamiseks.
MemoryStream Kasutatakse juhuslikuks juurdepääsuks mällu salvestatud voogedastatud andmetele.
Tee Teeb teeteabe toiminguid.
StreamReader Kasutatakse baitide voost märkide lugemiseks.
StreamWriter Kasutatakse voos märkide kirjutamiseks.
StringReader Kasutatakse stringi puhvrist lugemiseks.
StringWriter Kasutatakse stringi puhvrisse kirjutamiseks.

FileMode

The FileMode on loendaja, mis määratleb mitu faili avamise meetodit. FileMode Enumeratori liikmeid kirjeldatakse järgmiselt:

  • Lisa: See avab olemasoleva faili ja viib kursori faili lõppu või loob faili, kui faili pole olemas.
  • Loo: See on loodud uue faili loomiseks.
  • Loo uus: Selle eesmärk on täpsustada operatsioonisüsteemile, et see peaks looma uue faili.
  • Avatud: See on loodud olemasoleva faili avamiseks.
  • OpenOrCreate: Selle eesmärk on täpsustada operatsioonisüsteemi, et see peaks faili avama, kui see on olemas, vastasel juhul peaks see looma uue faili.
  • Kärpima: Kärpimine avab olemasoleva faili ja kärbib selle suuruse nullbaiti.

FileAccess

FileAccess Loendajat kasutatakse teatud failile juurdepääsu saamiseks. Sellel on järgmised liikmed.

  • Loe
  • Kirjutage
  • Lugema kirjutama

FileShare

The Failide jagamine Loendajat kasutatakse konkreetse faili jagamiseks. Sellel on järgmised liikmed.

  • Päritav: Päritav võimaldab failikäepidemel edastada pärandi lapse protsessidele.
  • Puudub: Ükski ei keeldu praeguse faili jagamisest
  • Loe: Lugemine võimaldab faili lugemiseks avada.
  • Lugema kirjutama: ReadWrite võimaldab faili avada lugemiseks ja kirjutamiseks.
  • Kirjuta: Kirjutamine võimaldab faili kirjutamiseks avada.

Sündmused

Sündmust tuntakse tavaliselt kui kasutaja loodud tegevust. See võib olla hiireklõps ja isegi üks klahvivajutus klaviatuurilt. Samamoodi on ka C # programmides üritusi. Sündmuse generaatorit nimetatakse kirjastaja ja sündmuse vastuvõtjat nimetatakse tellija.

Kirjastaja

TO kirjastaja sisaldab sündmuse määratlust ja delegaati. The sündmus-delegaat seos on selles objektis määratletud. A kirjastaja klassi objekt kutsub sündmuse esile ja sellest teavitatakse teisi objekte.

Tellija

TO tellija aktsepteerib sündmust ja annab ürituste läbiviija. The delegeerima avaldajaklassis kutsub meetodit / sündmust käitleja abonendiklassi.

Näide:

kasutades süsteemi nimeruumi Edureka {public delega string Del (string str) class EventBlock {event Del NewEvent public EventBlock () {this.NewEvent + = new Del (this.WelcomeUser)} public string WelcomeUser (stringi kasutajanimi) {return 'Tere tulemast Edurekasse . '+ kasutajanimi} static void Main (string [] args) {EventBlock obj1 = new EventBlock () string result = obj1.NewEvent (' Happy Learning ') Console.WriteLine (result)}}}

// Väljund:

Tere tulemast Edurekasse. Head õppimist

Üldised

Üldised on mõte pakkuda klassi liikmetele ja meetoditele kohaomanikke Jooksuaeg. Geneerikaid saame määratleda kasutades sulgudes. Vaatame järgmisi näiteid.

Geneerilised ained klassis

kasutades süsteemi nimeruumi Edureka {klass GenericClass {public GenericClass (T msg) {Console.WriteLine (msg)}} klassi programm {static void Main (string [] args) {GenericClass gen = new GenericClass ('See sõnum pärineb üldklassist' ) GenericClass genI = new GenericClass (123) GenericClass getCh = new GenericClass ('E')}}}

// Väljund:

See sõnum pärineb üldklassist
123
ON

Üldised meetodid

kasutades süsteemi nimeruumi Edureka {class GenericClass {public void Show (T msg) {Console.WriteLine (msg)}} klassi programm {static void Main (string [] args) {GenericClass genC = new GenericClass () genC.Show ('See sõnum pärineb üldmeetodist ') genC.Show (321) genC.Show (' H ')}}}

// Väljund:

See teade pärineb üldmeetodist
321
H

Delegaadid

The Delegaat toimib viitena meetodile. Põhimõtteliselt on see sama mis a funktsioonikursor C ja C ++, kuid palju parem ja tüübikindel. Delegaat aastal staatiline meetod kapseldab ainult meetodit. Kuigi delegaat on näiteks meetod hõlmab nii meetodit kui ka eksemplari. Delegaadi parim kasutus on kasutada sündmus.

Näide:

kasutades süsteemi delegaati int Kalkulaator (int n) avalik klass Edureka {staatiline int number = 25 avalik staatiline int lisama (int n) {number = number + n tagastusnumber} public staatiline int mul (int n) {number = arv * n tagastus number} public static int getNumber () {return number} public static void Main (string [] args) {Kalkulaator c1 = uus kalkulaator (lisa) kalkulaator c2 = uus kalkulaator (mul) c1 (20) konsool.WriteLine ('Pärast kalkulaatorit üks delegaat, uus number on: '+ getNumber ()) c2 (3) Console.WriteLine (' Pärast kahe delegaadi kalkulaatorit on uus number: '+ getNumber ())}}

// Väljund:

Pärast ühe delegaadi kalkulaatorit on uus number: 45
Pärast kahe delegaadi kalkulaatorit on uus number: 135

Peegeldus

Peegeldus on vajalik metaandmete saamiseks käitusajas. Viide on saadaval keeles Süsteem. Peegeldus nimeruum. Selle täitmiseks on vaja järgmisi klasse.

  • Tüüp
  • MemberInfo
  • ConstructorInfo
  • MethodInfo
  • FieldInfo
  • PropertyInfo
  • TypeInfo
  • EventInfo
  • Moodul
  • Kokkupanek
  • AssemblyName
  • Pointer

Tüüp klass

C # Type class tähistab klassitüüpide, liidese tüüpide, loendustüüpide, massiivitüüpide, väärtustüüpide tüübideklaratsioone

Tippige atribuudid

Tüüpiklasside oluliste omaduste loetelu on toodud allpool.

Kinnisvara Kirjeldus
Kokkupanek Saab selle tüübi assamblee.
AssemblyQualifiedName Saab assamblee selle tüübi jaoks kvalifitseeritud nime.
Atribuudid Hangi tüübiga seotud atribuudid.
BaseType Saab põhi- või vanemtüübi.
Täisnimi Saab tüübi täielikult kvalifitseeritud nime.
Isabstrakt kasutatakse selleks, et kontrollida, kas tüüp on abstraktne.
IsArray kasutatakse, et kontrollida, kas tüüp on massiiv.
IsClass kasutatakse selleks, et kontrollida, kas tüüp on klass.
IsEnum kasutatakse selleks, et kontrollida, kas tüüp on Enum.
IsInterface kasutatakse selleks, et kontrollida, kas tüüp on liides.
IsNested kasutatakse, et kontrollida, kas tüüp on pesastatud.
IsPrimitive kasutatakse selleks, et kontrollida, kas tüüp on ürgne.
IsPointer kasutatakse selleks, et kontrollida, kas tüüp on Pointer.
IsNotPublic kasutatakse, et kontrollida, kas tüüp pole avalik.
IsPublic kasutatakse, et kontrollida, kas tüüp on Avalik.
On suletud kasutatakse, et kontrollida, kas tüüp on suletud.
Iserialiseeritav kasutatakse, et kontrollida, kas tüüp on Serializable.
MemberType kasutatakse, et kontrollida, kas tüüp on Nested-tüüpi liige.
Moodul Saab tüübi mooduli.
Nimi Saab tüübi nime.
Nimeruum Saab tüübi nimeruumi.
Kinnisvara Kirjeldus
GetConstructors () Tagastab tüübi kõik avalikud konstruktorid.
GetConstructors (BindingFlags) Tagastab kõik tüübi konstruktorid koos määratud BindingFlagidega.
GetFields () Tagastab tüübi kõik avalikud väljad.
GetFields (BindingFlags) Tagastab kõik tüübi avalikud konstruktorid koos määratud BindingFlagidega.
GetMembers () Tagastab tüübi kõik avalikud liikmed.
GetMembers (BindingFlags) Tagastab kõik tüübi liikmed koos määratud BindingFlagidega.
GetMethods () Tagastab tüübi kõik avalikud meetodid.
GetMethods (BindingFlags) Tagastab kõik tüübi meetodid koos määratud BindingFlags-iga.
GetProperties () Tagastab tüübi kõik avalikud atribuudid.
GetProperties (BindingFlags) Tagastab tüübi kõik atribuudid koos määratud BindingFlagidega.
GetType () Saab praeguse tüübi.
GetType (string) Hangi antud nime tüübi.

Peegeldusnäited:

Hangi tüüp

Näide:

kasutades süsteemi public class GetType {public static void Main () {int a = 10 Type type = a.GetType () Console.WriteLine (type)}}

// Väljund:

System.Int32

Hankige assamblee

Näide:

süsteemi abil System.Reflection public class GetAssembly {public static void Main () {Type t = typeof (System.String) Console.WriteLine (t.Assembly)}}

// Väljund:

System.Private.CoreLib, versioon = 4.0.0.0, kultuur = neutraalne, PublicKeyToken = 7cec85d7bea7798e

Teave prinditüübi kohta

Näide:

süsteemi abil 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)}}

// Väljund:

Tõsi
Vale
Vale

Trükikonstruktorid

Näide:

süsteemi abil 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)}}}

// Väljund:

Süsteemi konstruktorid. Stringi tüüp ...
Tühine .ctor (Char [])
Tühine .ctor (Char [], Int32, Int32)
Tühine .ctor (Char *)
Tühine .ctor (Char *, Int32, Int32)
Tühine .ctor (SByte *)
Tühine .ctor (SByte *, Int32, Int32)
Tühista .ctor (SByte *, Int32, Int32, System.Text.Encoding)
Tühine .ctor (Char, Int32)
Void .ctor (System.ReadOnlySpan`1 [System.Char])

Prindimeetodid

Näide:

süsteemi abil System.Reflection public class PrintMethods {public static void Main () {Tüüp t = typeof (System.String) Console.WriteLine ('{0} type ...', t) MethodInfo [] ci = t .GetMethods (BindingFlags.Public | BindingFlags.Instance) foreach (MethodInfo m in ci) {Console.WriteLine (m)}}}

// Väljund:

Süsteemi meetodid. Stringi tüüp ...
System.String Asenda (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) ......

Väljade printimine

Näide:

süsteemi abil System.Reflection public class PrintFields {public static void Main () {Tüüp t = typeof (System.String) Console.WriteLine ('Väljad {0} type ...', t) FieldInfo [] ci = t .GetFields (BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic) foreach (FieldInfo f in ci) {Console.WriteLine (f)}}}

// Väljund:

Süsteemi väljad. Stringi tüüp ...
Süsteem. String tühi

Nüüd liigume mõningate täpsemate C # programmeerimiskontseptsioonide juurde

Täpsemad C # mõisted

Anonüümne funktsioon

Nimetatakse funktsiooni, millel puudub konkreetne nimi Anonüümne Funktsioonid. C #-s on saadaval kahte tüüpi anonüümseid funktsioone

  • Lambda väljendid
  • Anonüümsed meetodid

Näide:

kasutades süsteemi nimeruumi LambdaExpressions {class Edureka {delega int ruut (int number) staatiline void Main (string [] args) {Square GetSquare = x => x * x int j = GetSquare (25) Console.WriteLine ('Square:' + j)}}}

// Väljund:

Ruut: 625

Anonüümsed meetodid

The anonüümne meetod pakub sama funktsionaalsust nagu a lambda väljend, välja arvatud see, et see võimaldab meil parameetrite loendit ignoreerida.

Näide:

süsteemi nimeruumi kasutamine AnonymousMethods {klassi programm {public delegate void AnonymousFun () static void Main (string [] args) {AnonymousFun fun = delegate () {Console.WriteLine ('This is anonymous function')} fun ()}}}

// Väljund:

See on anonüümne funktsioon

Mitme keermega

Mitme lõimimine on protsess, kus luuakse ja määratakse erinevatele ülesannetele mitu lõime. see säästab aega, kui teostate korraga mitu tööd. Mitme keermega klass on saadaval keeles Süsteem. Keermestamine nimeruum.

Süsteem. Nimeruumi keermestamine

The Süsteem. Keermestamine nimeruum sisaldab klasse ja liideseid, et hõlbustada mitmekeelelist kasutamist. See annab klassid lõimeressursi sünkroonimiseks. Allpool on toodud kõige sagedamini kasutatavate klasside loend:

  • Niit
  • Mutex
  • Taimer
  • Monitor
  • Semafoor
  • ThreadLocal
  • ThreadPool
  • Lenduv

Protsess ja niit

Protsess on tegelikult ja rakendus ja seda peetakse a raskekaalu komponent. Teiselt poolt on niit üks singel moodul kogu rakendusest. see on kerge võrreldes protsessiga

Keerme elutsükkel

Igal lõimel on elutsükkel. Keerme olelustsükkel on määratletud klassis System.Threading.Thread. Järgnevad on mis tahes lõime elutsükli etapid.

  • Alustamata
  • Jooksev (valmis töötama)
  • Jooksmine
  • Ei ole joostav
  • Surnud

Klass Thread pakub järgmisi omadusi ja meetodeid.

Keerme omadused

Kinnisvara Kirjeldus
CurrentThread tagastab parajasti töötava lõime eksemplari.
On elus kontrollib, kas praegune lõim on elus või mitte.
IsBackground Praeguse lõime väärtuse saamiseks / määramiseks on taustal või mitte.
ManagedThreadId kasutatakse parajasti hallatava lõime ainulaadse ID saamiseks.
Nimi kasutatakse praeguse lõime nime saamiseks või määramiseks.
Prioriteet kasutatakse praeguse lõime prioriteedi saamiseks või määramiseks.
ThreadState kasutatakse lõime olekut tähistava väärtuse tagastamiseks.

Keermemeetodid

Meetod Kirjeldus
Abort () kasutatakse lõime lõpetamiseks. See tõstab ThreadAbortExceptionit.
Vahele segama() kasutatakse lõime katkestamiseks, mis on olekus WaitSleepJoin.
Liitu () kasutatakse blokeerimaks kõiki helistavaid lõime, kuni see lõng lõpeb.
Lähtesta abort () kasutatakse praeguse lõime katkestamise taotluse tühistamiseks.
Jätka() kasutatakse peatatud niidi jätkamiseks. See on vananenud.
Unerežiim (Int32) kasutatakse praeguse lõime peatamiseks määratud millisekunditeks.
Alusta () muudab lõime praeguse oleku jooksvaks.
Riputama() peatab praeguse lõime, kui see pole peatatud. See on vananenud.
Saagis () kasutatakse praeguse lõime täitmise teisele lõimele andmiseks.

Peamise lõime näide

süsteemi kasutamine süsteemi abil. Avaliku klassi keermestamine Edureka {public static void Main (string [] args) {Thread t = Thread.CurrentThread t.Name = 'MainThread' Console.WriteLine (t.Name)}}

// Väljund:

MainThread

Erandite käsitlemine

The erand on viga, mille programm viskab tööaja jooksul. Teeme erandkäsitluse selleks, et muuta meie programm erandiks tasuta.

Erand Kirjeldus
System.DivideByZeroException Numbri jagamisel tekkis viga.
System.NullReferenceException käsitleb nullobjektile viitamisel tekkinud viga.
System.InvalidCastException tegeleb vale tüübiprogrammi tekitatud veaga.
System.IO.IOException tegeleb sisend- ja väljundvigadega.
System.FieldAccessException Viga privaatse / kaitstud juurdepääsu tõttu.

C # -s kasutame esitamiseks 4 märksõna erandite käitlemine:

  • proovige
  • saak
  • lõpuks ja
  • viskama
Näide:
kasutades süsteemi avalik klass EdurekExample {public static void Main (string [] args) {proovige {int a = 10 int b = 0 int x = a / b} püüdmist (erand e) {Console.WriteLine (e)} Console.WriteLine ('See teade pärineb blokeerimisblokist')}}

// Väljund:

System.DivideByZeroException: üritati jagada nulliga.
at ExExaEdurekample.Main (String [] args) F-s: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: rida 10
See teade pärineb blokeerimisblokist

Kohandatud erandinäide

kasutades süsteemi 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.') } } 

// Väljund:

InvalidAgeException: Vabandust, eeldatavasti on vanus suurem kui 18 aastat
aadressil Customized.validate (Int32 vanus) väljaandes F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: rida 18
aadressil Customized.Main (string [] args) F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: rida 23
Püügiplokk on praegu käivitamisel.

Lõpuks blokeerige näide

kasutades süsteemi public class FinalExecption {public static void Main (string [] args) {proovige {int a = 10 int b = 0 int x = a / b} püüdmist (erand e) {Console.WriteLine (e)} lõpuks {Console .WriteLine ('Lõpuks plokk on täidetud')} Konsool.WriteLine ('Püüdmisblokk on täidetud')}}

// Väljund:

System.DivideByZeroException: üritati jagada nulliga.
at FinalExecption.Main (String [] args) F-s: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: rida 10
Lõpuks blokeeritakse
Püügiplokk täidetakse

Süsteemi erandi allkiri

[SerializableAttribute] [ComVisibleAttribute (true)] avalik klass SystemException: Exception

Süsteemi erandkonstruktorid

Ehitaja Kirjeldus
SystemException () Seda kasutatakse klassi SystemException uue eksemplari initsialiseerimiseks.
SystemException

(SerializationInfo, StreamingContext)

Seda kasutatakse klassi SystemException uue eksemplari initsialiseerimiseks jadaandmetega.
SystemException (string) Seda kasutatakse klassi SystemException uue eksemplari lähtestamiseks määratud tõrketeatega.
SystemException (string, erand) Seda kasutatakse klassi SystemException uue eksemplari lähtestamiseks määratud tõrketeate ja viitega sisemisele erandile, mis on selle erandi põhjus.

Süsteemi erandi omadused

Kinnisvara Kirjeldus
Andmed Seda kasutatakse võtme- ja väärtuspaaride kogu saamiseks, mis pakuvad erandi kohta lisateavet kasutaja poolt määratletud kohta.
HelpLink Seda kasutatakse selle erandiga seotud abifaili lingi hankimiseks või seadistamiseks.
HRtulemus Seda kasutatakse konkreetse erandi jaoks määratud kodeeritud arvväärtuse HRESULT saamiseks või määramiseks.
InnerException Seda kasutatakse praeguse erandi põhjustanud eksemplari eksemplari saamiseks.
Sõnum Seda kasutatakse praegust erandit kirjeldava teate saamiseks.
Allikas Seda kasutatakse vea põhjustanud rakenduse nime hankimiseks või määramiseks.
StackTrace Seda kasutatakse kõnepinu otseste kaadrite stringi esituse saamiseks.
TargetSite Seda kasutatakse meetodi saamiseks, mis loob praeguse erandi.

Süsteemi erandimeetodid

Meetodid Kirjeldus
Võrdne (objekt) Selle abil kontrollitakse, kas määratud objekt on praeguse objektiga võrdne või mitte.
Lõpeta () Seda kasutatakse ressursside vabastamiseks ja puhastustoimingute tegemiseks.
GetBaseException () Seda kasutatakse juurte erandi saamiseks.
GetHashCode () Seda kasutatakse räsikoodi saamiseks.
GetObjectData

(SerializationInfo, StreamingContext)

Seda kasutatakse objektiandmete saamiseks.
GetType () Seda kasutatakse praeguse eksemplari käitustüübi saamiseks.
MemberwiseClone () Seda kasutatakse praeguse objekti madala koopia loomiseks.
ToString () Seda kasutatakse praeguse erandi stringi kujutise loomiseks ja tagastamiseks.

Süsteemi erandi näide

kasutades süsteemi nimeruumi CSharpProgram {class SystemExceptionExample {static void Main (string [] args) {try {int [] arr = new int [5] arr [10] = 25} catch (SystemException e) {Console.WriteLine (e)} }}}

// Väljund:

System.IndexOutOfRangeException: Indeks oli väljaspool massiivi piire.
aadressil CSharpProgram.SystemExceptionExample.Main (String [] args) F-s: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: rida 11

Sünkroonimine

Sünkroonimine võib olla tehnika, mis võimaldab ainult 1 lõimel teatud aja jooksul ressursile juurde pääseda. Ükski alternatiivne lõime ei katkesta enne, kui määratud niit on oma ülesande lõpetanud.

Mitmikeermelises programmis on niidid lubatudjuurdepääs mis tahes ressurssidelemääratud täitmineaeg. Teemad jagavad ressursse ja teostavad asünkroonselt. Juurdepääs jagatud ressurssidele (andmetele)võib olla oluline ülesanneet üldiseltvõiks peatadasüsteemi.meil on kalduvus seda mõjutadalõime loomisel sünkroonsel viisil.

Näide ilma sünkroonimiseta

süsteemi kasutamine süsteemi abil. Keerme klass Edureka {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() } } 

// Väljund:

üks
üks
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
10
10

Näide sünkroonimisega

süsteemi kasutamine süsteemi abil. klassi Edureka keermestamine {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() } } 

// Väljund:

üks
2
3
4
5
6
7
8
9
10
üks
2
3
4
5
6
7
8
9
10

Uued omadused

Microsoft on lisanud C # keelele palju uusimaid funktsioone, millest mõned on allpool mainitud.

C # 6,0

  • Staatilise direktiivi kasutamine
  • Erandfiltrid
  • Oota saagis / lõpuks blokeerib
  • Automaatse vara algatajad
  • Ainult getteri omaduste vaikeväärtused
  • Väljendkehalised liikmed
  • Tühi levitaja
  • Stringi interpoleerimine
  • Operaatori nimi
  • Sõnaraamatu lähtestaja
  • Koostaja teenusena (Roslyn)

C # 7,0

  • Mustri sobitamine
  • Tuplid
  • Dekonstrueerimine
  • Kohalikud funktsioonid
  • Numbrite eraldaja
  • Binaarsed literaalid
  • Ref tagastab ja kohalikud
  • Väljendkonstruktorid ja lõpuleviijad
  • Väljendkere getters ja setters
  • Välja muutujad
  • Üldistatud asünkroonilised tagasitüübid

C # 7,1

  • Asünkroon peamine
  • Vaikeväljendid

Intervjuuküsimused C # põhjal

Olulise intervjuu C # programmeerimiskeelel põhinevad küsimused leiate sellest ajakohastatud versioonist .

Sellega jõuame selle artikli C # juhendaja lõpuni. Loodan, et olete aru saanud andmestruktuuride, süntaksi, funktsionaalsuse ja nende abil tehtavate toimingute olulisusest. Nüüd, kui olete selle kaudu aru saanud C # programmeerimise põhitõdedestC # õpetus, vaadake pakutav koolitus Edureka poolt paljude tehnoloogiate, näiteks Java, Kevad ja paljudLisaks sai usaldusväärne veebiõppefirma, mille võrgustik hõlmab üle 250 000 rahuloleva õppija kogu maailmas küsimus meile? Mainige seda selle C # juhendaja blogi kommentaaride osas ja võtame teiega ühendust niipea kui võimalik.