C # pamoka: pagrindai, kuriuos reikia išmokti C #



Šis straipsnis apie „C # Tutorial“ padės jums gauti išsamių žinių apie „C # fundamentals“ ir realaus laiko pavyzdžius, kad geriau suprastumėte.

C # yra universali ir patikima programavimo kalba, kurią 2000 m. Sukūrė „Microsoft Corporation“ kaip mirtinas „Java“ konkurentas. Tai yra populiariausia ir dominuojanti programavimo kalba, kai kalbama tiek apie interneto, tiek apie darbalaukio programų kūrimą.

Šioje C # pamokoje sužinosime šias sąvokas.





C # pagrindai

Įvadas į C # programavimo kalbą

Dar 90-ųjų pradžioje „Java“ buvo pirmaujanti programavimo kalba kuriant žiniatinklį, darbalaukio programų kūrimą ir daugelį kitų sričių. „Microsoft“ norėjo sugalvoti konkurentą su daugybe pažangių funkcijų, kurios gali palikti „Java“ toli už nugaros.



C#-Tutorial-hejlsberg_bio

Tai buvo 2000 metais, Andersas Hejlsbergas ir jo „Microsoft“ komanda sugalvojo „C #“ idėją, kuri populiariai vadinama „C-Sharp“. Šiai iniciatyvai pritarė Tarptautinė standartų organizacija (PAGRINDINIS) ir Europos kompiuterių gamintojų asociacija (ECMA). ir galiausiai, C # patenka į programinės įrangos kūrimo pasaulį.

C # programavimo kalbos ypatybės



  • Į objektą orientuota programavimo kalba

Objektyvaus programavimo metodas yra tai, kas daro C # sharp patogiausią programuotojui ir lengvai kuriamą bei palaikomą programavimo kalbą.

  • Saugi tipui kalba

„Type-Safe“ prasmė yra ta, kad kompiliatoriui bus suteikta prieiga tik prie tos atminties vietos, kuri turi leidimą vykdyti. Ši funkcija pagerina kodo saugumą iki eksponentinio lygio.

  • Sąveika

Sąveikos ypatybė suteikia C # galimybę pakankamai efektyviai atlikti viską, kas yra gimtoji C ++, o tai gali pranokti patį C ++.

  • Turtinga biblioteka

C # suteikia prieigą prie daugybės įmontuotų bibliotekų, kurios teikia iš anksto užprogramuotas funkcijas, kad sutrumpėtų laikas, praleistas kūrimo procese.

  • Keičiama ir atnaujinama

C # buvo sukurtas taip, kad būtų pranašesnis tarp kitų programavimo kalbų. Taigi, jis visada atviras naujinimams ir savo funkcijomis palaiko save labai keičiamą.

  • Orientuotas į komponentą

„Microsoft“ kūrėjai naudojo komponentais pagrįstą metodą kurdami C #. Tai yra labiausiai vyraujanti kūrimo metodika, kad C # būtų labai keičiamas ir atnaujinamas.

  • Struktūrinė kalba

Struktūruoto programavimo metodas yra pageidaujamas programinės įrangos kūrimo gyvavimo ciklo metu, nes tampa lengva kurti programinę įrangą ir ją įdiegti, palyginti su procedūriniu programavimo metodu.

  • Greitai

C # Kompiliavimas ir vykdymas yra greitesnis, palyginti su C ++ ir kitomis programavimo kalbomis.

Montavimas

Tai įrodyta „Microsoft Visual Studio“ yra geriausias klasės redaktorius C # programavimui. Mes įdiegsime ir nustatysime „Microsoft Visual Studio“, kad vykdytume C # programas, atlikdami toliau nurodytus veiksmus:

1 žingsnis : Atsisiųskite „Microsoft Visual Studio“

„Google“ naujausia „Visual Studio“ versija ir atsisiųskite diegti failą į savo vietinę sistemą ir tada paleisti diegimo failą kaip administratorius.

2 žingsnis: Pasirinkite .NET darbalaukio kūrimo paketą

Paleidus diegimo programą, „Visual Studio“ redaktorius bus sėkmingai atsisiųstas į jūsų vietinę sistemą, vėliau darbalaukio ekrane bus rodomas dialogo langas, kuriame bus prašoma konkretų paketą jums reikia jūsų sistemoje. Čia turite pasirinkti .NET darbalaukio kūrimas paketą.

3 žingsnis: nustatykite C # aplinką

Kai jūsų paketai .NET plėtra yra atsisiųsti, tada ekrane bus rodomas kitas dialogo langas, kuriame bus prašoma jūsų ieškomos kūrimo aplinkos. Čia reikia pasirinkite aplinką C #.

4 žingsnis: sukurkite savo pirmąjį projektą

Kai aplinka bus nustatyta, jums viskas gerai. Paleiskite „Visual Studio“ ir pasirinkite sukurti naują projektą parinktį rodomame dialogo lange.

Būsite nukreipti į kitą dialogo langą ir ten turėsite pasirinkti „Class library“ kaip .NET standartas kaip parodyta žemiau.

Kitame dialogo lange jūsų bus paprašyta Konfigūruokite savo projektą . Sukonfigūruokite jį ir dabar esate redaktoriuje. Parašykite savo pirmąją programą ir paleisti tai. Išvestis bus sėkmingai rodoma Komandinė eilutė.

naudojant sistemos klasę „Edureka“ {static void Main (string [] args) {Console.WriteLine ('Sveiki atvykę į Edureka !, Laimingo mokymosi ..!')}}

// Rezultatas:

Vykdykime savo pirmąją C # programą.

C # programos struktūra

Dabar, kai įvykdėme savo pirmąją C # programą, išsamiai supraskime jos struktūrą. Paprasta C # programa turi šias dalis.

naudojant sistemos vardų sritį „ConsoleApplication1“ {public class Edureka {public static void Main (string [] args) {Console.WriteLine ('Welcome to Edureka !, Happy Learning ..!')}}}

// Rezultatas:

Sveiki atvykę į „Edureka!“, Laimingo mokymosi ..!

  • klasė: klasę paprastai galima apibrėžti kaip a raktinis žodis kuri naudojama apibrėžiant klasę C # programoje.
  • Edureka: Tai yra Klasė. Klasė dažnai laikoma projektu, kuriame saugomi nariai ir metodai, susiję su klase.
  • Pagrindinis: Iš esmės yra pagrindinis metodas visos C # programos, ji veikia kaip valdymo vartai įeiti į programą. Jis vykdomas prieš vykdant bet kurį kitą programos metodą.
  • tuštuma: Šis kodo segmentas yra skirtas grąžinimo tipas metodo. Tai gali būti bet koks duomenų tipas, išskyrus negaliojančius. Panaikinimas reiškia, kad metodas neturi jokių duomenų, kurie būtų iš jo grąžinami.
  • statinis: Tai yra raktinis žodis sakoma, kad deklaruojami duomenų nariai yra statiški, o deklaruotiems nariams yra skirta tam skirta atmintis.
  • Stygos [] argumentuoja: Tai primena komandinės eilutės argumentus, kuriuos naudojame savo programoje. Vykdydami savo programą iš esmės perduodame kai kurias argumentai, kurį programa priims dėl šio teiginio.
  • „System.Console.WriteLine“ („Sveiki atvykę į„ Edureka! “, Laimingo mokymosi ..!“) Čia Sistema yra vardų sritis. Pultasyra ta kategorijasistemos vardų srityje. The WriteLine () yra taistatinistechnikakonsolėskategorija, kuri naudojama nurašytikonsolės tekstą.

Dabar sužinokime C # pasiekiamus duomenų tipus.

Duomenų tipai

C # duomenų tipai yra suskirstyti į tris kategorijas, kurios aprašytos toliau.

Vertės duomenų tipai

The Vertės duomenų tipai yra įsikūrę System.ValueType Biblioteką ir visada yra pasirengę tiesiogiai pasiekti, o kintamuosius galima tiesiogiai priskirti tam tikrai vertei. Vertybių duomenų tipai taip pat skirstomi į du tipus, kaip parodyta žemiau:

  • Iš anksto nustatyti duomenų tipai
  • Vartotojo apibrėžti duomenų tipai

Iš anksto nustatyti duomenų tipai: Tai yra tie, kuriuos paprastai naudojame kasdieniame programavime. Šiuos duomenų tipus iš anksto nustato kalbos kūrėjai ir jie yra pasirengę naudoti programuotojams.

Pavyzdys:

int, plūdė, char, trumpas dvigubas ir kt

Vartotojo nustatyti duomenų tipai: Yra situacijų, kai mums gali tekti saugoti skirtingas duomenų tipų reikšmes į vieną kintamąjį. Šiais atvejais Iš anksto nustatyti duomenų tipai nepakanka. Nustatyta vartotojo Duomenų tipai yra tarsi vartotojo pritaikomi duomenų tipai.

Pavyzdys: Struktūra, Enum

Duomenų tipas Paskirtos atminties diapazonas Atminties dydis
pasirašytas char -128 iki 127 1 baitas
nepasirašyta char Nuo 0 iki 127 1 baitas
char -128 iki 127 1 baitas
pasirašė trumpai Nuo -32 768 iki 32 767 2 baitai
nepasirašytas trumpas Nuo 0 iki 65 535 2 baitai
trumpas Nuo -32 768 iki 32 767 2 baitai
pasirašytas tarpt -2,147,483,648 iki -2,147,483,647 4 baitai
nepasirašytas tarpt Nuo 0 iki 4 294 967 295 4 baitai
tarpt -2,147,483,648 iki -2,147,483,647 4 baitai
pasirašė ilgai -9,223,372,036,854,775,808 iki 9,223,372,036,854,775,807 8 baitai
nepasirašytas ilgas Nuo 0 iki 18 446 744 073 709 551 615 8 baitai
ilgas -9,223,372,036,854,775,808 iki 9,223,372,036,854,775,807 8 baitai
plūdė 1,5 * 10-45 - 3,4 * 1038, (7 skaitmenų tikslumas) 4 baitai
dvigubai 5,0 * 10-324 - 1,7 * 10308, (15 skaitmenų tikslumas) 8 baitai
po kablelio -7,9 * 10–28 - 7,9 * 1028, (28 skaitmenų tikslumas) 16 baitų


Rodyklės duomenų tipas

Pointer Type yra paprastas duomenų tipas. Jo funkcionalumas yra visiškai panašus į „C“ rodykles. Jie skirti saugoti kito rodyklės adresą.

plūdė * ptr

Nuorodų duomenų tipai

Pavadinimas savaime suprantamas. The Nuorodų duomenų tipai iš tikrųjų nesaugo kintamųjų, o saugo to konkretaus kintamojo pamatinę vertę. Kitaip tariant, jie saugo faktinio kintamojo adresą.

Pamatiniai kintamieji skirstomi į tris skirtingus tipus, kaip nurodyta toliau:

  • Objekto tipas

Objekto duomenų tipą galima rasti Sistema. Objektas Klasė.Objektastipaigali būtipriskirtasvertėskiti tipai,nuorodatipai, iš anksto apibrėžta, vartotojo apibrėžtatipai. Bet anksčiauužduotisvertybes, tai reikalauja tipo konversija.

objektas abc abc = 50 // tai vadinama boksu
  • Dinaminis tipas

„Dinaminio tipo“ kintamieji yra skirti beveik visų tipų reikšmėms saugoti. Jis vadinamas dinaminiu tipu, nes verčių tipas tikrinamas vykdymo metu

dinaminis x = 10
  • Stygos tipas

Stygos tipas yra Sistema. Stygos klasė. Styginių tipas sukurtas styginių literalams saugoti. Styginiai literalai yra saugomi dviem formomisdvi formos

    • cituojamas
    • @cotated.
Eilutė S = „Edureka“
  • The @cotated eilutė pažodžiui atrodo
@ „Edureka“

Dabar leiskite mums suprasti kintamuosius.

Kintamieji

Kintamieji yra atminties vietai skirti pavadinimai, kuriuose saugomi tam tikri vartotojo pateikti duomenys ir kurie yra lengvai prieinami naudojant kintamojo pavadinimą. C # yra penkių tipų kintamieji

Tipas Pavyzdys
Null Nėra duomenų
Būlio Tiesa ir melas
Sveikasis skaičius Vidutinis, Char, Baitas, Trumpas, Ilgas
Plūdė Plūduriuojantis ir dvivietis
Dešimtainis skaičius Dešimtainis skaičius

Pavyzdys:

int a, b dviguba x plūduriuojanti p char abc

Taisyklės, kurių reikia laikytis deklaruojant kintamuosius C #

  • Kintamasis gali apimti abėcėles, skaitmenis ir pabraukimus.
  • Kintamojo vardas gali prasidėti tik abėcėle arba pabraukimu.
  • Kintamieji negali prasidėti skaitmeniu ar specialiuoju simboliu.
  • Tarp kintamojo pavadinimo negalima įrašyti tarpų.
  • Rezervuoti raktiniai žodžiai negali būti naudojami kaip kintamųjų pavadinimai.

Operatoriai

Operatorių galima apibrėžti kaip specialų simbolį, kuris paaiškina kompiuterį, kad tam tikra matematinė yra loginė operacija pagal kintamųjų rinkinį. C # apima įvairius operatorius, kurie minimi kaip nurodyta toliau.

  • Aritmetikos operatoriai
  • Ryšių operatoriai
  • Loginiai operatoriai
  • Operatoriai bitais
  • Užduočių operatoriai

Aritmetikos operatoriai

operatorius Pavyzdys apibūdinimas
+ A + B Pridedami du operandai
- A - B Atima du operandus
* A * B Kartoja du operandus
/ A / B Padalina du operandus
% A% B Likusi dviejų operandų dalis
++ A ++ Prieaugio operacija
- TO- Mažinimo operacija

Ryšių operatoriai

operatorius Pavyzdys apibūdinimas
== A == B Tiesa, jei abu operandai yra lygūs, kita klaidinga
! = A! = B Tiesa, jei abu operandai nėra lygūs, kita klaidinga
> A> B Tiesa, jei A yra didesnis, dar klaidingas
< Į Tiesa, jei B yra didesnis, dar klaidingas
> = A> = B Tiesa, jei A yra didesnis arba lygus, dar klaidinga
<= Į<= B Tiesa, id B yra lygesnis, dar klaidingas

Loginiai operatoriai

operatorius Pavyzdys apibūdinimas
&& A && B Tiesa, jei teisingi abu operandai, kita klaidinga
|| A || B Tiesa, jei vienas iš operandų yra teisingas, kita klaidinga
! A! B Pakeičia loginę operando būseną

Operatoriai bitais

Į B A ir B A | B A ^ B
vienas vienas vienas vienas 0
vienas 0 0 vienas vienas
0 vienas 0 vienas vienas
0 0 0 0 0
operatorius Pavyzdys apibūdinimas
~ (~ A) „Dvejetainio vieno“ papildomas operatorius yra nevienodas ir veikia „apverčiant“ bitus.
<< Į<<2 Dvejetainis kairės poslinkio operatorius. Kairiojo operando reikšmė perkeliama kairėn dešiniojo operando nurodytu bitų skaičiumi.
>> A >> 2 Dvejetainis dešiniojo poslinkio operatorius. Kairiojo operando reikšmė perkeliama į dešinę dešiniojo operando nurodytu bitų skaičiumi.

Užduočių operatoriai

operatorius Pavyzdys apibūdinimas
= A = B + C A = B + C, B + C priskiriamas A
+ = A + = B A = A + B, A + B priskiriamas A
- = A - = B A = A-B, A-B priskiriamas A
* = A - = B A = A * B, A * B priskiriamas A
/ = A / = B A = A / B, A / B priskiriamas A
% = A% = B A = A% B, A% B priskiriamas A
<<= Į<<= 2 Kairysis pamainos ir priskyrimo operatorius
>> = A >> = 2 Dešinės pamainos ir priskyrimo operatorius
& = A & = 2 „Bitwise“ ir priskyrimo operatorius
^ = A ^ = 2 Išskirtinis ir priskyrimo operatorius
| = A! = 2 „Bitwise Inclusive“ ir priskyrimo operatorius

Kilpos

Į kilpa sakinys naudojamas vykdant sakinių bloką pakartotinai, kol įvykdoma konkreti sąlyga. C # kalbą sudaro šie ciklo teiginiai.

  • Dėl kilpos
  • Nors kilpa
  • Darykite, kol kilpa

Dėl kilpos

The už kilpą yra naudojamas tam tikram kodo segmentui vykdyti kelis kartus, kol bus įvykdyta duota sąlyga.

Sintaksė

for (inicializavimo sąlygos prieaugis / sumažėjimas) {// kodo segmentas}

Srauto diagrama:

Pavyzdys:

naudojant sistemos viešąją klasę ForExample {public static void Main (string [] args) {for (int i = 1 i<= 5 i++) { Console.WriteLine(i) } } } 

// Rezultatas:

vienas
2
3
4
5

Nors kilpa

svarbesnis nei perkrovimas c ++

The Nors kilpa yra naudojamas kodo segmentui vykdyti kelis kartus, kol įvykdoma konkreti sąlyga.

Sintaksė

while (sąlyga) {// kodas turi būti vykdomas}

Srauto diagrama:

Pavyzdys:

naudojant sistemos vardų sritį Loops {class Program {static void Main (string [string arg]) {int x = 5 while (x<= 10) { Console.WriteLine('The value of a: {0}', x) x++ } Console.ReadLine() } } } 

// Rezultatas:

A reikšmė: 5
A reikšmė: 6
A reikšmė: 7
A reikšmė: 8
A reikšmė: 9
A reikšmė: 10

Darykite, kol kilpa

„Do while loop“ yra visiškai panaši į „While Loop“, tačiau vienintelis skirtumas yra tas, kad sąlyga dedama kilpos pabaigoje. Taigi, ciklas vykdomas bent kartą.

Sintaksė

atlikite {// kodą, kurį reikia vykdyti}, kol (sąlyga)

Srauto diagrama:

Pavyzdys:

naudojant sistemos vardų sritį „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, produktas) i ++}, kol (i<= 10) } } } 

// Rezultatas:

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

Sąlyginis

Sąlyginiai teiginiai yra naudojami vykdyti pareiškimas arba jų grupė pareiškimus remiantis kokia nors sąlyga. Jei būklė yra tiesa tada C # teiginiai vykdoma kitaip pareiškimas bus įvykdyta.

Skirtingi sąlyginių teiginių tipai C ++ kalba yra šie:

  1. Jei teiginys
  2. „If-Else“ teiginys
  3. Įdėtas „If-else“ teiginys
  4. „If-Else If“ kopėčios
  5. Perjungti teiginį

Jei teiginys

Vienintelis jei sakinys C # kalba naudojamas kodui vykdyti, jei sąlyga yra teisinga. Tai taip pat vadinama vienos krypties atrankos teiginiu.

Sintaksė

if (loginė išraiška) {// sakiniai vykdomi, jei loginė išraiška yra teisinga}

Srauto diagrama:

Pavyzdys:

naudojant sistemos vardų sritį Sąlyginė {class IfStatement {public static void Main (string [] args) {int skaičius = 2 if (skaičius<5) { Console.WriteLine('{0} is less than 5', number) } Console.WriteLine('This statement is always executed.') } } } 

// Rezultatas:

2 yra mažesnis nei 5
Šis pareiškimas visada vykdomas.

„If-Else“ teiginys

The jei-dar sakinys C kalba naudojamas kodui įvykdyti, jei sąlyga yra teisinga arba klaidinga. Jis taip pat vadinamas dvipusio atrankos teiginiu.

Sintaksė

if (loginė išraiška) {// sakiniai vykdomi, jei loginė išraiška yra teisinga} kiti {// sakiniai, vykdomi, jei loginė išraiška klaidinga}

Srauto diagrama:

Pavyzdys:

naudojant sistemos vardų sritį Sąlyginis {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.') } } } 

// Rezultatas:

12 yra didesnis arba lygus 5
Šis pareiškimas visada vykdomas.

Įdėtas „If-else“ teiginys

Lizdai jei-dar sakinys naudojamas, kai programai reikia daugiau nei vienos bandomosios išraiškos. Jis taip pat vadinamas daugiakrypčiu atrankos teiginiu. Kai į pareiškimą įtraukiama daugybė sprendimų, mes naudojame jei-dar pareiškimas įdėta forma.

Sintaksė

if (loginė išraiška) {if (įdėta-išraiška-1) {// vykdytinas kodas} dar {// vykdomas kodas}} kitas {jei (įdėta-išraiška-2) {// kodas turi būti vykdomas } else {// kodas turi būti vykdomas}}

Srauto diagrama:

Pavyzdys:

naudojant sistemos vardų sritį Sąlyginė {klasė įdėta {public static void Main (string [] args) {int first = 7, second = -23, third = 13 if (first & gt second) {if (first

// Rezultatas:

13 yra didžiausias

Kitos kopėčios

The jei-dar-jei sakinys naudojamas vienam kodui vykdyti iš kelių sąlygų. Jis taip pat vadinamas daugiakrypčiu sprendimo pareiškimu. Tai yra if..else sakinių grandinė, kurioje kiekvienas if teiginys yra susietas su else if, o paskutinis, būtų else teiginys.

Sintaksė

if (sąlyga1) {// kodas, kurį reikia įvykdyti, jei sąlyga1 yra teisinga} else if (sąlyga2) {// kodas turi būti vykdomas, jei sąlyga2 teisinga} dar kitaip, jei (sąlyga3) {// kodas, kurį reikia įvykdyti, jei sąlyga3 yra teisinga} ... else {// kodas, kurį reikia įvykdyti, jei visos sąlygos yra klaidingos}

Srauto diagrama:

Pavyzdys:

naudojant sistemos klasę „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 yra 15 ') else if (i == 20) Console.WriteLine (' i yra 20 ') else Console.WriteLine (' i nera ')}}

// Rezultatas:

man yra 20

Perjungti teiginį

Perjungti teiginys veikia kaip ilgų kopėčių pakaitalas, jei bandoma atvejų sąrašas. Jungiklio sakinyje yra viena ar kelios raidžių etiketės, kurios išbandomos pagal jungiklio išraišką. Kai išraiška sutampa su byla, bus vykdomi susieti teiginiai su ta byla.

Sintaksė

jungiklis (kintamasis / išraiška) {atvejo reikšmė1: // Pareiškimai vykdomi, jei išraiška (arba kintamasis) = reikšmė1 pertraukos atvejo vertė2: // Teiginiai, vykdomi, jei išraiška (arba kintamasis) = reikšmė1 pertrauka ... ... ... .. . ... ... numatytasis: // sakiniai vykdomi, jei nesutampa nė vienas atvejis}

Srauto diagrama:

Pavyzdys:

naudojant sistemos vardų sritį Sąlyginis {class SwitchCase {public static void Main (string [] args) {char ch Console.WriteLine ('Enter a alfabet') ch = Convert.ToChar (Console.ReadLine ()) switch (Char.ToLower (ch )) {atvejis „a“: „Console.WriteLine“ („Balsis“) pertraukos atvejis „e“: „Console.WriteLine“ („Balsis“) pertraukos atvejis „i“: „Console.WriteLine“ („Balsis“) pertraukos „o“: „Console.WriteLine“ („Balsis“) pertrauka „u“: „Console.WriteLine“ („Balsis“) pertrauka pagal nutylėjimą: „Console.WriteLine“ („Negalima balsės“) pertrauka}}}}

// Rezultatas:

Įveskite abėcėlę
yra
Balsis

Stygos

Stygos Duomenų tipas yra Sistema. Stygos Klasė. Jis sugeba saugoti simbolio tipo duomenis. Mes galime atlikti įvairias operacijas „Stings“, pvzsujungimas, palyginimas, pakraščių gavimas, paieška, apdaila, pakeitimas ir daug daugiau.

Stygos ir stygos analogija

C # Stygos ir stygos yra lygiaverčiai. Žodis eilutė yra a raktinis žodis ir veikia kaip Sistema. Stygos klasė. Stygoms deklaruoti galime naudoti bet kurią iš versijų.

Sintaksė:

string s1 = 'Edureka' // eilutės kūrimas naudojant eilutės raktinį žodį String s2 = 'Happy Learning' // eilutės kūrimas naudojant eilutės klasę

Pavyzdys:

naudojant sistemos viešąją klasę „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 '} eilutė s2 = nauja eilutė (ch) Console.WriteLine ( s1) Console.WriteLine (s2)}}

// Rezultatas:

Edureka
„Csharp“ pamoka

Stygų metodai C #

Metodas apibūdinimas
Klonas () Naudojamas norint grąžinti nuorodą į šį eilutės egzempliorių.
Palyginti (stygos, stygos) Naudojamas lyginant du nurodytus „String“ objektus.
Concat (stygos, stygos) Sujunkite du nurodytus eilutės egzempliorius.
Yra (stygos) Grąžinkite vertę, nurodančią nurodytą pogrindį
Kopijuoti (eilutė) Naudojamas kuriant naują eilutės egzempliorių su ta pačia verte
„CopyTo“ (int, char [], int, int) Kopijuoja simbolius iš nurodytos vietos
Lygus (stygos, stygos) Nustato, kad du eilutės objektai turi tą pačią vertę.
Formatas (eilutė, objektas) Pakeiskite vieną ar daugiau formato elementų nurodytoje eilutėje
„IndexOf“ (eilutė) Pateikia nulinio pirmojo įvykio indeksą
Įterpti (Int32, eilutė) Grąžina naują eilutę, kurioje eilutė įterpta į indeksą.
„IsInterned“ (eilutė) Nurodo, kad ši eilutė yra „Unicode“ normalizavimo C formoje.
„IsNullOrEmpty“ (eilutė) Nurodo, kad nurodyta eilutė yra nulinė arba tuščia eilutė.
„IsNullOrWhiteSpace“ (eilutė) Naudojamas nurodyti, ar nurodyta eilutė yra tuščia, tuščia,
Prisijunkite (stygos, stygos []) Naudojamas sujungiant visus styginių masyvo elementus
LastIndexOf (Char) Pateikia paskutinio simbolio nulinę indekso padėtį
„LastIndexOfAny“ (Char []) Pateikia paskutinio simbolio nulinę indekso padėtį
Pašalinti (Int32) Grąžina naują eilutę, kurioje yra visi simboliai
Pakeisti (eilutė, eilutė) Grąžina naują eilutę, kurioje visi eilutės atvejai
Padalinti (Char []) Jis naudojamas eilutei padalyti į pakraščius
StartsWith (eilutė) Jis naudojamas patikrinti, ar šios eilutės pradžia
Substringas (Int32) Jis naudojamas pakoreguoti iš šio egzemplioriaus.
„ToCharArray“ () Nukopijuoja šios instancijos simbolius į „Unicode“ masyvą.
„ToString“ () Jis naudojamas grąžinti eilutės egzempliorių.
Apkarpyti() Apipjausto virvelę


Masyvai

Panašiai kaip ir kitos programavimo kalbos, C # turi masyvus. Masyvai yra paprastos duomenų struktūros, skirtos tam pačiam elementų duomenų tipui laikyti gretimoje atminties vietoje.

C # palaiko šiuos masyvo tipus.

  • Vienmatis masyvas
  • Daugialypis masyvas
  • Jagged Array

Vienmatis masyvas

Vieno matmens masyvas saugo elementus vienos eilės pavidalu.

Sintaksė

int [] arr = new int [5] // masyvo kūrimas

Pavyzdys:

naudojant 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 (int i = 0 i 

// Rezultatas:

10
dvidešimt
30
40
penkiasdešimt

Daugialypis masyvas

Daugialypis masyvas elementus saugo kelių matmenų pavidalu, pavyzdžiui, matrica, kubas ir kt.

Sintaksė

int val = a [2,3]

Pavyzdys:

naudojant sistemos vardų erdvę 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 už (i = 0 i<5 i++) { for (j = 0 j < 2 j++) { Console.WriteLine('a[{0},{1}] = {2}', i, j, a[i, j]) } } Console.ReadKey() } } } 

// Rezultatas:

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“ yra tiesiog masyvų masyvas.

Pavyzdys:

naudojant sistemos vardų erdvę ArrayApplication {class MyArray {static void Main (string [] args) {int [] [] a = new int [] [] {new int [] {0,0}, new int [] {1,2 }, naujas int [] {2,4}, naujas int [] {3, 6}, naujas int [] {4, 8}} int i, j už (i = 0 i<5 i++) { for (j = 0 j < 2 j++) { Console.WriteLine('a[{0}][{1}] = {2}', i, j, a[i][j]) } } Console.ReadKey() } } } 

// Rezultatas:

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

Kolekcijos

Kolekcija gali būti tiesiog laikoma kartu surinktų objektų grupe, kad surinktiems duomenims būtų pritaikytos kai kurios funkcijos. Operacijos, kurias kartą galima atlikti kolekcijoje, yra:

  • parduotuvės objektas
  • atnaujinti objektą
  • ištrinti objektą
  • gauti objektą
  • paieškos objektas ir
  • rūšiuoti objektą

Kolekcijų tipai

Yra trys skirtingos galimybės dirbti su kolekcijomis. Toliau minimos trys vardų sritys:

  • Sistema. Kolekcijos. Bendra klasės
  • Sistema. Kolekcijos klasės
  • Sistema. Kolekcijos. Sutampa klasės

„System.Collections.Generic“ klasėje yra šios klasių veislės:

  • Sąrašas
  • Sukrauti
  • Eilė
  • „LinkedList“
  • „HashSet“
  • RūšiuotiNustatyti
  • Žodynas
  • Rūšiuotas žodynas
  • Rūšiuotas sąrašas

The Sistema. Kolekcijos klasės laikomos palikimo klasėmis. jie apima šias klases.

  • „Masyvo sąrašas“
  • Sukrauti
  • Eilė
  • „Hashtable“

The Sistema. Kolekcijos. Sutampa klasėsvardų sritis pateikia klases, skirtas saugiai veikti gijoms. Dabar kelios gijos nesukels problemų pasiekti kolekcijos elementus. šioje klasėje yra:

  • „BlockingCollection“
  • „ConcurrentBag“
  • „ConcurrentStack“
  • „ConcurrentQueue“
  • „ConcurrentDictionary“
  • Pertvaros
  • Pertvaros
  • „OrderablePartitioner“

Sąrašas

The sąrašą yra laikoma duomenų struktūra, prieinama 2007 m Sistema. Kolekcija. Generika vardų sritis. Jis gali laikyti ir atnešti elementus. Sąraše galima saugoti pasikartojančius elementus.

Pavyzdys:

naudojant sistemą naudojant „System.Collections“. Bendroji viešoji klasė „Edureka“ {public static void Main (string [] args) {var names = new List () names. Add ('Sandhya') names.Add ('Arun') names.Add ( „Prashanth“) pavadinimai. Pridėkite („Kiran“) foreach (kintamojo vardas pavadinimuose) {Console.WriteLine (name)}}}

// Rezultatas:

Sandhya
Arun
Prashanth
Kiranas

Maišos rinkinys

C # HashSetkategorija dažnai įpratusiparduotuvė,Atimtiarbaskaityti komponentus. Taineturiparduotuvės dublikataskomponentai.tai raginamanaudoti „HashSet“ KategorijajeiJūs turitesandėliuotivien tik skiriamasis komponentai . tai rasti sistemoje.Kolekcijos.Bendra vardų sritis.

Pavyzdys:

naudojant sistemą naudojant 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“ vardai. Pridėkite („Imran“) vardus. Pridėkite („karan“) foreach (var vardai pavadinimuose) {Console.WriteLine (name)}}}

// Rezultatas:

Sunil
Amaras
Pujari
Imranas
karanas

Rūšiuotas rinkinys

C # SortedSetklasės yra įpratęparduotuvė, pašalinti arba skaityti elementai . Jis palaiko didėjimo tvarką irneturiparduotuvės dublikataselementai.tai greitanaudoti „SortedSet“KategorijajeiJūs turitesandėliuoti skiriamasis komponentai ir palaikyti kylančią tvarką.tairasti sistemoje.Kolekcijos.Bendra vardų sritis.

Pavyzdys:

naudojant sistemą naudojant 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“) pavadinimai. Pridėkite („Ravi“) vardus. Pridėkite („Kajol“) foreach (var vardai pavadinimuose) {Console.WriteLine (name)}}}

// Rezultatas:

Anuradha
Kajolis
Praveenas
Ravi
Sanjay

Sukrauti

The kamino yra paprasta sekanti kolekcija EDGE arba pirmoji paskutinio išvedimo procedūra apdorojant joje saugomus elementus.

Pavyzdys:

naudojant sistemą naudojant „System.Collections“. Bendroji viešoji klasė „Edureka“ {public static void Main (string [] args) {Stack names = new Stack () names. Push ('Chandan') names.Push ('Pooja') names.Push ( „James“) vardai. „Push“ („Rajesh“) vardai. „Push“ („kumar“) foreach (eilutės pavadinimas pavadinimuose) {Console.WriteLine (name)} Console.WriteLine ('Peek element:' + names.Peek () ) Console.WriteLine ('Pop:' + names.Pop ()) Console.WriteLine ('After Pop, Peek element:' + vardai.Peek ())}}

// Rezultatas:

kumaras
Radžišas
Džeimsas
Pooja
Čandanas
Žvilgtelėti elementas: kumaras
Pop: kumaras
Po „Pop“, „Peek“ elemento: Rajeshas

Eilė

Eilė yra visiškai panaši į „Stack“, tačiau vienintelis skirtumas yra tas, kad seka eilė FIFO arba „first in and first out“ principas apdorojant jame saugomus elementus.

Pavyzdys:

naudojant sistemą naudojant „System.Collections“. Bendroji viešoji klasė „Edureka“ {public static void Main (string [] args) {Queue names = new Queue () names. Enqueue ('Srujan') names.Enqueue ('Prajat') names.Enqueue ( „John“) vardai. Enqueue („Raju“) pavadinimai. Enqueue ('Hari') foreach (eilutės pavadinimas pavadinimuose) {Console.WriteLine (name)} Console.WriteLine ('Peek element:' + vardai.Peek () ) Console.WriteLine ('Dequeue:' + vardai.Dequeue ()) Console.WriteLine ('After Dequeue, Peek elementas:' + vardai.Peek ())}}

// Rezultatas:

Srujanas
Prajat
Jonas
Nuožmi
Diena
Žvilgsnio elementas: Srujanas
Dequeue: Srujanas
Po Dequeue, Peek elementas: Prajat

Susietas sąrašas

Susietas sąrašas yra dinaminės atminties kolekcija. Elementai susietame sąraše saugomi pasiekiant atmintį iš kaupo ir saugant elementus ištisine tvarka susiejant jų adresus.

Pavyzdys:

naudojant sistemą naudojant 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“) pavadinimai. „AddLast“ („jay“) pavadinimai. „AddFirst“ („sai“) foreach (var vardai pavadinimuose) {Console.WriteLine (name)}}}

// Rezultatas:

sai
Ribos
Arun
Prakašas
jay

Žodynas

Žodynas Kategorijanaudojaidėjahashtable. Jis saugo vertesprielaidarakto. Jame yraskiriamasisraktaivien tik. Ikipagalbarakto,mes paprasčiausiaiieškoti arbaatimti elementus.tairasti sistemoje.Kolekcijos.Bendra vardų sritis.

Pavyzdys:

naudojant sistemą naudojant „System.Collections“. Bendroji viešoji klasė „Edureka“ {public static void Main (string [] args) {Dictionary names = new Dictionary () names. Add ('1', 'Shiva') names.Add ('2', „Prasad“) pavadinimai. Pridėkite („3“, „Preetam“) pavadinimus. Pridėkite („4“, „Roy“) vardus. Pridėkite („5“, „Akash“) foreach („KeyValuePair kv“ pavadinimuose) {konsolė. WriteLine (kv.Key + '' + kv.Value)}}}

// Rezultatas:

1 Šiva
2 Prasad
3 „Preetam“
4 Rojus
5Akašas

Rūšiuotas žodynas

The Rūšiuotas žodynas Kategorijanaudojadizainashashtable. Jis saugo vertesidėjarakto. Jame yraskiriamasisraktus ir palaiko didėjimo tvarkąidėjarakto. Ikipagalbarakto,mes paprasčiausiaiieškoti arbaatimti elementus.tairasti sistemoje.Kolekcijos.Bendra vardų sritis.

Pavyzdys:

naudojant sistemą naudojant „System.Collections“. Bendroji viešoji klasė „Edureka“ {public static void Main (string [] args) {SortedDictionary names = new SortedDictionary () names. Add ('1', 'Arun') names.Add ('4', „Vishal“) vardai. Pridėkite („5“, „Ramesh“) pavadinimus. Pridėkite („3“, „Vidya“) pavadinimus. Pridėkite („2“, „Pallavi“) foreach („KeyValuePair kv“ pavadinimuose) {konsolė. WriteLine (kv.Key + '' + kv.Value)}}}

// Rezultatas:

1 Šiva
2 Prasad
3 „Preetam“
4 Rojus
5Akašas

Rūšiuotas sąrašas

The Rūšiuotas sąrašas yraanraktų / reikšmių porų masyvas. Jis saugo vertesprielaidarakto. Rūšiuotas sąrašasKategorijayraskiriamasisraktus ir palaiko didėjimo tvarkąprielaidarakto. Ikipagalbarakto,mes sugebame paprastaiieškoti arba pašalintielementai.tairasti Sistema. Kolekcijos. Bendra vardų sritis.

Pavyzdys:

naudojant sistemą naudojant „System.Collections“. Bendroji viešoji klasė „Edureka“ {public static void Main (string [] args) {SortedDictionary names = new SortedDictionary () names. Add ('1', 'Arun') names.Add ('4', „Vishal“) vardai. Pridėkite („5“, „Ramesh“) pavadinimus. Pridėkite („3“, „Vidya“) pavadinimus. Pridėkite („2“, „Pallavi“) foreach („KeyValuePair kv“ pavadinimuose) {konsolė. WriteLine (kv.Key + '' + kv.Value)}}}

// Rezultatas:

1 Arunas
2 Pallavi
3 Vidja
4 Vishal
5Ramesh

Struktūra

Struktūra yra vartotojo apibrėžtas duomenų tipas, sukurtas saugoti kelis skirtingo tipo duomenų elementus. Struktūra deklaruojama naudojant raktinį žodį struktūros.

Pavyzdys:

naudojant sistemos struktūros knygas {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 ++ programavimo pamoka 'Book1.book_id = 95908978 Book2.title =' Telekomunikacijų atsiskaitymas 'Book2.author =' Karan 'Book2.subject =' Telekomunikacijų atsiskaitymo pamoka 'Book2.book_id = 18674900 Console.WriteLine ( „1 knygos pavadinimas: {0}“, „Book1.title“) „Console.WriteLine“ („1 knygos autorius: {0}“, „Book1.author“) „Console.WriteLine“ („1 knygos tema: {0}“, „Book1.subject“) Console.WriteLine ('1 knygos knyga_id: {0}', Book1.book_id) konsolė.WriteLine ('2 knygos pavadinimas: {0}', Book2.title) konsolė.WriteLine ('2 knygos autorius: {0}', „Book2.author“) „Console.WriteLine“ („2 knygos tema: {0}“, „Book2.subject“) „Console.WriteLine“ („2 knygos book_id: {0}“, „Book2.book_id“) konsolė.ReadKey ()}}

// Rezultatas:

1 knygos pavadinimas: C # programavimas
1 knyga Autorius: Ramchandra Kumar
1 knygos tema: C ++ programavimo pamoka
1 knyga book_id: 95908978
2 knygos pavadinimas: Telekomunikacijų atsiskaitymas
2 knyga Autorius: Karanas
2 knygos tema: Telekomunikacijų atsiskaitymo pamoka
2 knyga book_id: 18674900

Funkcijos

Funkcija apibrėžiama kaip pagrindinio kodo blokas. Funkcija naudojama vykdant sakinius, nurodytus kodo bloke. Funkcija susideda iš šių komponentų.

  • Funkcijos pavadinimas: Tai skiriamasis vardas, naudojamas skambinant funkcijai.
  • Grąžinimo tipas: Tai nurodo funkcijos grąžinimo vertės duomenų tipą.
  • Kūnas: Jame yra vykdomieji teiginiai.
  • Prieigos specifikatorius: Jis nurodo funkcijų pasiekiamumą programoje.
  • Parametrai: Tai yra argumentų sąrašas, kurį galime perduoti funkcijai skambučio metu.

Sintaksė

FunctionName () {// function body // return utasítás}

Pavyzdys:

naudojant sistemos vardų sritį FunkcijaPavyzdys {class Edureka {public string Show (string message) {Console.WriteLine ('Inside Show Function') return message} static void Main (string [string arg]) {Edureka program = new Edureka () string message = program . „Show“ („Edureka“) konsolė. WriteLine („Sveiki atvykę“ + pranešimas)}}}

// Rezultatas:

Viduje rodoma funkcija
Sveiki atvykę į „Edureka“

Funkcijos gali būti vykdomos 3 skirtingais būdais:

  • Skambinkite pagal vertę
  • Skambinkite pagal nuorodą
  • Iš parametras

Skambinkite pagal vertę

C #, vertė -tipas parametrusyrakad praeitikopijapradinės vertėsfunkcija vietojnuoroda. Taineturimodifikuotipirmoji vertė. Ansukurtas pakeitimasperėjovertė nėraAmžiuskonkrečią vertę.persekantis pavyzdys,mes turimepraeitivertė visojeskambutis.

Pavyzdys:

naudojant sistemos vardų sritį CallByValue {class Edureka {public void Show (int val) {val * = val Console.WriteLine ('The show inside the show function' + val)} static void Main (string [] args) {int val = 50 „Edureka“ programa = nauja „Edureka () Console.WriteLine“ („Vertė prieš iškviečiant funkciją“ + val) programą. „Show“ (val) „Console.WriteLine“ („Reikšmė iškvietus funkciją“ + val)}}}

// Rezultatas:

Vertė prieš iškviečiant funkciją 50
Rodymo funkcijos vertė 2500
Reikšmė iškvietus funkciją 50

Skambinkite pagal nuorodą

„Call by Reference“ metodas,į nuoroda raktinis žodis, kad perduotų argumentą kaip nuorodos tipą. Argumentų nuorodą jis perduoda funkcijai, o ne originalios vertės kopijai. Perduodamų verčių pokyčiai yra nuolatiniai ir modifikuoti pradinės kintamosios vertės.

Pavyzdys:

naudojant sistemos vardų sritį CallByReference {class Edureka {public void Show (ref int val) {val * = val Console.WriteLine ('The show inside the show function' + val)} static void Main (string [] args) {int val = 50 „Edureka“ programa = nauja „Edureka“ () Console.WriteLine ('Reikšmė prieš iškviečiant funkciją' + val) programą. Rodyti (ref val) Console.WriteLine ('Reikšmė iškvietus funkciją' + val)}}}

// Rezultatas:

Vertė prieš iškviečiant funkciją 50
Rodymo funkcijos vertė 2500
Vertė iškvietus funkciją 2500

Iš parametras

Išėjimo parametrasnumato išėjo raktinis žodis, kad perduotų argumentus kaip tipo tipo. Tai panašu į nuorodos tipą, išskyrus tai, kad prieš perduodant nereikia, kad kintamasis būtų inicializuotas. Privalome naudoti išėjo raktinis žodis, kad argumentas būtų perduotas kaip tipo tipas. Tai naudinga, kai norime, kad funkcija grąžintų kelias reikšmes.

Pavyzdys:

naudojant sistemos vardų sritį 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“ („Vertė prieš išduodant kintamąjį“ + val) programą. Parodykite (out val) „Console.WriteLine“ („Vertė gavus kintamąjį“ + val)}}}}

// Rezultatas:

Vertė prieš išduodant 50 kintamąjį

Vertėgavus kintamąjį 25

Dabar pereikime prie objektinio programavimo

Objektinis programavimas

Objektinis programavimas Sistemayra programavimo paradigma, pagrįsta objektai kuriuose yra duomenų nariai ir metodai susijusių su jais. Pagrindinis objektinio programavimo tikslas yra padidinti programų lankstumą ir palaikomumą

Objektinio programavimo ypatybės:

  • Čia daugiau dėmesio skiriama duomenims, o ne procedūroms.
  • Programos yra suskirstytos į objektus, todėl jas lengva dirbti.
  • Duomenų struktūros sukurtos taip, kad apibūdintų objektus.
  • Veikiančios funkcijos antobjekto duomenys kartu dedami į duomenų struktūrą.
  • Duomenys yra paslėpti ir be leidimo prie jų negalima naudotis išorinėmis funkcijomis.
  • Bendravimas tarp objektų gali vykti funkcijų pagalba.
  • Naujų duomenų ir funkcijų pridėjimas tapo lengvas.
  • Kuriant programą vadovaujamasi principu „iš apačios į viršų“.

Objektyvios paradigmos C # yra tokios

Surašymas C #

Enum arba taip pat vadinamas kaip surašymas C # naudojamas pastovioms vertėms saugoti, nekeičiant jų per visą C # programos vykdymą. Tainaudojamas saugoti įvardytų konstantų, tokių kaip sezonas, dienos, mėnuo, dydis ir kt., rinkinį

Pavyzdys:

naudojant sistemos viešąją klasę „Enum“. Pavyzdys {public enum week {pirmadienis, antradienis, trečiadienis, ketvirtadienis, penktadienis, šeštadienis, sekmadienis} public static void Main () {int x = (int) savaitė. Pirmadienis int y = (int) savaitė. Penktadienio konsolė .WriteLine ('Monday = {0}', x) Console.WriteLine ('Friday = {0}', y)}}

// Rezultatas:

Pirmadienis = 0
Penktadienis = 4

Objektinio programavimo metodas

Objektyvų programavimo stilių galima pasiekti laikantis toliau nurodytų metodų.

Inkapsuliacija

Inkapsuliacija yra metodas sujungti metodai kartu su jų duomenų nariai.

Pavyzdys:

naudojant sistemos vardų sritį „Edureka“ {klasės stačiakampis {public double length public double width public double GetArea () {return length * width} public void Display () {Console.WriteLine ('Length: {0}', length) Console.WriteLine (' Plotis: {0} ', plotis) Console.WriteLine (' Area: {0} ', GetArea ())}} class ExecuteRectangle {static void Main (string [] argumentai) {Stačiakampis r = naujas Stačiakampis () r.length = 50 r. Plotis = 35 r. „Display () Console.ReadLine ()}}}

// Rezultatas:

Ilgis: 50
Plotis: 35
Plotas: 1750 m

Abstrakcija

Abstrakcija yra metodas paslėpti sudėtingą vartotojo kodavimo dalį teikiant jam tik reikiamą informaciją.

Pavyzdys:

naudojant System public abstract class Shape {public abstract void draw ()} public class Rectangle: Shape {public override void draw () {Console.WriteLine ('drawing rectangle ...')}}} public class Circle: Shape {public override void atkreipti () {Console.WriteLine ('piešimo ratas ...')}} public class TestAbstract {public static void Main () {Shape ss = new Rectangle () s.draw () s = new Circle () s.draw ()}}

// Rezultatas:

stačiakampio piešimas ...
piešimo ratas ...

Sąsaja

The sąsaja yra visiškai panašus į Abstrakcija. Sąsajos funkcionalumas yra paslėpti nesvarbius duomenis nuo vartotojo ir pateikti jam vienintelius svarbius duomenis, kurių jam reikia.

Pavyzdys:

naudojant sistemos viešąją sąsają Drawable {void draw ()} public class Stačiakampis: Drawable {public void draw () {Console.WriteLine ('drawing rectangle ...')}} public class Circle: Drawable {public void draw () {Console .WriteLine ('piešimo ratas ...')}} public class TestInterface {public static void Main () {Drawable dd = new Stačiakampis () d.draw () d = new Circle () d.draw ()}}

// Rezultatas:

stačiakampio piešimas ...
piešimo ratas ...

Polimorfizmas

Polimorfizmasyra derinys „Poli“ + „Morfai“ o tai reiškia daugybę formų. Tai graikiškas žodis. Tai reiškia, kad kodo segmentas gali būti kelių formų. Mes turime dvi polimorfizmo rūšis.

  • Sudarykite laiko polimorfizmą
  • Vykdymo laiko polimorfizmas

Pavyzdys:

naudojant sistemą 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.spalva)}}

// Rezultatas:

baltas

Paveldėjimas

Paveldėjimas yra procesas, kurio metu vienas objektas automatiškai įgyja visas pagrindinio objekto savybes ir elgesį. Galite pakartotinai naudoti, išplėsti ar modifikuoti atributus ir elgseną, apibrėžtus kitoje klasėje. vadinama klasė, kuri paveldi kitos klasės narius išvestinė klasė o klasė, kurios nariai yra paveldimi, vadinama bazė klasė. Išvestinė klasė yra specializuota pagrindinės klasės klasė.

Vieno lygio paveldėjimo pavyzdys

naudojant sistemos vardų sritį RectangleApplication {class Rectangle {apsaugotas dvigubo ilgio apsaugotas dvigubo pločio viešasis stačiakampis (double l, double w) {length = l width = w} public double GetArea () {return length * width} public void Display () {Console. „WriteLine“ („Ilgis: {0}“, ilgis) „Console.WriteLine“ („Plotis: {0}“, plotis) „Console.WriteLine“ („Plotas: {0}“, „GetArea“ ())}} klasės klasė Stalviršis: stačiakampis {privatus dvigubos kainos viešasis stalinis kompiuteris (dvigubas l, dvigubas w): pagrindas (l, w) {} viešas dvigubas „GetCost“ () {dvigubų išlaidų mokestis = „GetArea“ () * 70 grąžinimo išlaidų} viešasis negaliojantis ekranas () {bazė.Display () konsolė .WriteLine ('Kaina: {0}', GetCost ())}}} klasės „ExecuteRectangle“ {static void Main (string [] args) {Stalviršio t = naujas Stalviršis (4.5, 7.5) t.Display () Console.ReadLine () }}}

// Rezultatas:

Ilgis: 4.5
Plotis: 7.5
Plotas: 33.75
Kaina: 2362,5

Daugiapakopio paveldėjimo pavyzdys

naudojant sistemos vardų sritį „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)} klasės stačiakampis: forma, „PaintCost“ {public int getArea () {return (width * height)} public int getCost (int area) {return area * 70}} class RectangleTester {static void Main (string [] args) {Stačiakampis Rect = naujas stačiakampis () int plotas Rect.setWidth (5) Rect.setHeight (7) plotas = Rect.getArea () Console.WriteLine ('Bendras plotas: {0}', Rect.getArea ()) Console.WriteLine ('Iš viso dažų kaina: {0} USD, „Rect.getCost (area)“ konsolė.ReadKey ()}}}

// Rezultatas:

Bendras plotas: 35
Bendra dažų kaina: 2450 USD

Perkrovimas

Perkrovimas yra situacija, kai turime du ar narius, deklaruotus tuo pačiu vardu. Perkrauti galima ir tada, kai deklaruojame du ar daugiau metodų tuo pačiu pavadinimu. Patikrinkime abiejų pavyzdžius.

Narių perkrova

Pavyzdys:

naudojant sistemos viešąją klasę „Edureka“ {public static int add (int a, int b) {return a + b} public static int add (int a, int b, int c) {return a + b + c}} public class TestMemberOverloading { public static void Main () {Console.WriteLine (Edureka.add (12, 23)) Console.WriteLine (Edureka.add (12, 23, 25))}}

// Rezultatas:

35
60

Metodas Perkrovimas

Pavyzdys:

naudojant sistemos viešąją klasę „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))}}

// Rezultatas:

35
33.699997

Nepaisoma

Nepaisoma yra situacija, kai vaikų klasė apibrėžia tą patį metodą, kurį apibrėžia ir tėvai. Supraskime tai per mažą pavyzdį.

Pavyzdys:

naudojant sistemos viešąją klasę „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 () {šuo d = naujas šuo () d.eat ()}}

// Rezultatas:

Maisto valgymas

Vardų sritis

The vardų sritis iš esmės naudojamas tvarkyti kelias programoje esančias klases. Vardų sritis yra prieinama įvairiais būdais.

  • Sistema. Pultas: Čia, Sistema tampa vardų sritimi
  • Norėdami pasiekti vardų srities klasę, turime naudoti namespacename.clnamename.
  • Mes galime naudoti naudojant raktinį žodį.

Pavyzdys:

naudojant sistemą naudojant „First“, naudojant antrąją vardų sritį „First {public class Edureka {public void sayWelcome () {Console.WriteLine ('Welcome to Edureka']}}}} vardų sritis Second {public class Happy_Learning {public void sayWishes () {Console.WriteLine (' Laimingo mokymosi ')}}} viešosios klasės vardų sritis {public static void Main () {Edureka h1 = new Edureka () Happy_Learning w1 = new Happy_Learning () h1.sayWelcome () w1.sayWishes ()}}

// Rezultatas:

Sveiki atvykę į „Edureka“
Laimingo mokymosi

Failų operacijos

The failų operacijos C # yra šie:

Operacija apibūdinimas
„BinaryReader“ Skaito primityvius duomenis iš dvejetainio srauto.
„BinaryWriter“ Rašo primityvius duomenis dvejetainiu formatu.
„BufferedStream“ Laikina baitų srauto saugykla.
Katalogas Padeda manipuliuoti katalogų struktūra.
„DirectoryInfo“ Naudojamas katalogų operacijoms atlikti.
„DriveInfo“ Teikia informaciją apie diskus.
Failas Padeda manipuliuoti failais.
„FileInfo“ Naudojamas failų operacijoms atlikti.
„FileStream“ Naudojamas skaityti iš bet kurios failo vietos ir rašyti į ją.
„MemoryStream“ Naudojamas atsitiktinei prieigai prie sraute perduotų duomenų, saugomų atmintyje.
Kelias Atlieka kelio informacijos operacijas.
„StreamReader“ Naudojamas skaitant simbolius iš baitų srauto.
„StreamWriter“ Naudojamas rašyti simbolius į srautą.
StringReader Naudojamas skaityti iš eilutės buferio.
StringWriter Naudojamas rašant į styginių buferį.

„FileMode“

The „FileMode“ yra surašytojas, kuris apibrėžia kelis failų atidarymo būdus. „FileMode Enumerator“ nariai aprašomi taip:

  • Pridėti: Atidaro esamą failą ir žymeklį uždeda į failo pabaigą arba sukuria failą, jei failo nėra.
  • Sukurti: Jis skirtas sukurti naują failą.
  • Sukurk naują: Jis skirtas operacinei sistemai nurodyti, kad ji turėtų sukurti naują failą.
  • Atviras: Jis skirtas atidaryti esamą failą.
  • „OpenOrCreate“: Jis skirtas operacinei sistemai nurodyti, kad ji turėtų atidaryti failą, jei jis yra, priešingu atveju jis turėtų sukurti naują failą.
  • Sutrumpinti: Sutrumpinti atidaromas esamas failas ir sutrumpinamas jo dydis iki nulio baitų.

„FileAccess“

„FileAccess“ Surašytojas yra naudojamas norint gauti prieigą prie konkretaus failo. Joje yra šie nariai.

  • Perskaityk
  • Rašykite
  • Skaityk rašyk

„FileShare“

The Failų bendrinimas Surašytojas naudojamas bendrinti tam tikrą failą. Joje yra šie nariai.

operatorių tipai „javascript“
  • Paveldimas: Paveldimas leidžia failo rankenai perduoti paveldėjimą vaiko procesams.
  • Nė vienas: Nė vienas neatmeta dabartinio failo bendrinimo
  • Skaityti: Skaityti leidžia atidaryti failą skaityti.
  • Skaityk rašyk: „ReadWrite“ leidžia atidaryti failą skaitymui ir rašymui.
  • Parašykite: Rašymas leidžia atidaryti failą rašymui.

Įvykiai

Įvykis paprastai žinomas kaip veiksmas, kurį sugeneruoja vartotojas. Tai gali būti pelės paspaudimas ir net vienas klavišo paspaudimas. Panašiai C # programos taip pat turi įvykių. Įvykio generatorius vadinamas leidėjas o įvykio imtuvas vadinamas abonentas.

Leidėjas

Į leidėjas yra įvykio ir delegato apibrėžimas. The renginys-delegatas asociacija apibrėžta šiame objekte. A leidėjas klasės objektas iškviečia įvykį ir apie jį pranešama kitiems objektams.

Abonentas

Į abonentas priima renginį ir pateikia renginių vedėjas. The deleguoti leidėjų klasėje naudoja metodą / įvykį vedlys prenumeratorių klasės.

Pavyzdys:

naudojant sistemos vardų sritį „Edureka“ {public delegate string Del (string str) class EventBlock {event Del NewEvent public EventBlock () {this.NewEvent + = new Del (this.WelcomeUser)} public string WelcomeUser (string user name) {return 'Welcome to Edureka . '+ username} static void Main (string [] args) {EventBlock obj1 = new EventBlock () string string = obj1.NewEvent (' Happy Learning ') Console.WriteLine (result)}}}

// Rezultatas:

Sveiki atvykę į „Edureka“. Laimingo mokymosi

Generikai

Generikai yra koncepcija, kaip klasės nariams ir metodams suteikti vietos savininkus Vykdymo laikas. „Generics“ galime apibrėžti naudodami skliausteliuose. Patikrinkime šiuos pavyzdžius.

Generikai klasėje

naudojant sistemos vardų sritį „Edureka“ {class GenericClass {public GenericClass (T msg) {Console.WriteLine (msg)}} klasės programa {static void Main (string [string]] {GenericClass gen = new GenericClass ('Šis pranešimas yra iš bendros klasės' ) „GenericClass“ genI = nauja „GenericClass“ (123) „GenericClass“ getCh = nauja „GenericClass“ („E“)}}}

// Rezultatas:

Šis pranešimas yra iš bendros klasės
123
IS

Generikai metodu

naudojant sistemos vardų sritį „Edureka“ {class GenericClass {public void Show (T msg) {Console.WriteLine (msg)}} klasės programa {static void Main (string [] args) {GenericClass genC = new GenericClass () genC.Show ('This pranešimas yra iš bendro metodo ') genC.Show (321) genC.Show (' H ')}}}

// Rezultatas:

Šis pranešimas yra iš bendro metodo
321
H

Delegatai

The Delegatas veikia kaip nuoroda į metodą. Iš esmės tai tas pats kaip a funkcijos rodyklė C ir C ++, bet kur kas geresni ir saugesni tipams. Delegatas statinis metodas apima tik metodą. Nors delegatas instancija metodas apima ir metodą, ir egzempliorių. Geriausias delegato naudojimas yra naudoti kaip įvykis.

Pavyzdys:

naudojant „System delegate int“ skaičiuoklę (int n) public class Edureka {static int number = 25 public static int add (int n) {number = number + n return number} public static int mul (int n) {number = number * n return skaičius} public static int getNumber () {return number} public static void Pagrindinis (eilutė [] argumentai) {Skaičiuoklė c1 = nauja skaičiuoklė (pridėti) skaičiuoklė c2 = nauja skaičiuoklė (mul) c1 (20) konsolė.WriteLine ('Po skaičiuoklės vienas delegatas, naujas skaičius yra toks: '+ getNumber ()) c2 (3) Console.WriteLine (' Po skaičiuoklės dviejų delegatų naujas skaičius yra: '+ getNumber ())}}

// Rezultatas:

Paskaičiavus vieną delegatą, naujas skaičius yra: 45
Po dviejų deleguotų skaičiuoklių naujas skaičius yra: 135

Atspindys

Atspindys reikalingas norint gauti metaduomenis vykdymo metu. Nuorodą galite rasti Sistema. Atspindys vardų sritis. Tam reikia vykdyti šias klases.

  • Tipas
  • „MemberInfo“
  • „ConstructorInfo“
  • „MethodInfo“
  • „FieldInfo“
  • „PropertyInfo“
  • „TypeInfo“
  • „EventInfo“
  • Modulis
  • Surinkimas
  • AssemblyName
  • Rodyklė

Tipo klasė

C # tipo klasė reiškia klasės tipų, sąsajų tipų, išvardijimo tipų, masyvo tipų, reikšmių tipų deklaracijas

Įveskite ypatybes

Žemiau pateikiamas svarbių „Type“ klasių savybių sąrašas.

Nuosavybė apibūdinimas
Surinkimas Gauna šio tipo asamblėją.
AssemblyQualifiedName Gauna šio tipo asamblėjos kvalifikuotą pavadinimą.
Atributai Gauna atributus, susietus su tipu.
„BaseType“ Gauna pagrindinį arba tėvų tipą.
Pilnas vardas Gauna visiškai kvalifikuotą tipo pavadinimą.
IsAbstraktas naudojamas patikrinti, ar tipas yra Santrauka.
IsArray yra naudojamas patikrinti, ar tipas yra Masyvas.
„IsClass“ yra naudojamas patikrinti, ar tipas yra 'Class'.
IsEnum naudojamas patikrinti, ar tipas yra „Enum“.
„IsInterface“ naudojamas patikrinti, ar tipas yra sąsaja.
„IsNested“ yra naudojamas patikrinti, ar tipas yra įdėtas.
IsPrimitive yra naudojamas patikrinti, ar tipas yra primityvus.
„IsPointer“ naudojamas patikrinti, ar tipas yra žymeklis.
IsNotPublic naudojamas patikrinti, ar tipas nėra viešas.
„IsPublic“ naudojamas patikrinti, ar tipas yra Viešas.
Užklijuota yra naudojamas patikrinti, ar tipas yra uždarytas.
„IsSerializable“ yra naudojamas patikrinti, ar tipas yra Serializable.
„MemberType“ yra naudojamas patikrinti, ar tipas yra „Nested“ tipo narys.
Modulis Gauna tipo modulį.
vardas Gauna tipo pavadinimą.
Vardų sritis Gauna tipo vardų sritį.
Nuosavybė apibūdinimas
„GetConstructors“ () Grąžina visus viešus „Type“ konstruktorius.
„GetConstructors“ („BindingFlags“) Grąžina visus tipo konstruktorius su nurodytomis „BindingFlags“.
„GetFields“ () Grąžina visus viešus tipo laukus.
„GetFields“ („BindingFlags“) Grąžina visus viešojo tipo konstruktorius su nurodytomis „BindingFlags“.
„GetMembers“ () Grąžina visus viešuosius „Type“ narius.
„GetMembers“ („BindingFlags“) Grąžina visus „Type“ narius su nurodytomis „BindingFlags“.
„GetMethods“ () Grąžina visus viešus tipo metodus.
„GetMethods“ („BindingFlags“) Grąžina visus tipo metodus su nurodytomis „BindingFlags“.
„GetProperties“ () Grąžina visas viešąsias tipo ypatybes.
„GetProperties“ („BindingFlags“) Grąžina visas tipo ypatybes su nurodytomis „BindingFlags“.
„GetType“ () Gauna dabartinį tipą.
„GetType“ (eilutė) Gauna nurodyto vardo tipą.

Apmąstymo pavyzdžiai:

Gaukite tipą

Pavyzdys:

naudojant sistemos viešąją klasę „GetType“ {public static void Main () {int a = 10 tipo tipas = a.GetType () Console.WriteLine (type)}}

// Rezultatas:

Sistema.Int32

Gaukite surinkimą

Pavyzdys:

naudojant sistemą naudojant „System.Reflection“ viešąją klasę „GetAssembly“ {public static void Main () {tipas t = typeof (System.String) Console.WriteLine (t.Assembly)}}

// Rezultatas:

System.Private.CoreLib, versija = 4.0.0.0, kultūra = neutrali, PublicKeyToken = 7cec85d7bea7798e

Informacija apie spausdinimo tipą

Pavyzdys:

naudojant sistemą naudojant „System.Reflection“ viešąją klasę „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)}}

// Rezultatas:

Tiesa
Klaidinga
Klaidinga

Spausdinimo konstruktoriai

Pavyzdys:

naudojant sistemą naudojant „System.Reflection“ viešosios klasės „PrintConstructors“ {public static void Main () {Tipas t = typeof (System.String) Console.WriteLine ('{0} type ... 'konstruktoriai, t) ConstructorInfo [] ci = t .GetConstructors (BindingFlags.Public | BindingFlags.Instance) foreach (ConstructorInfo c in ci) {Console.WriteLine (c)}}}

// Rezultatas:

Sistemos konstruktoriai. Stygos tipas ...
Negalima .ctor (Char [])
Negalima .ctor (Char [], Int32, Int32)
Negalima .ctor (Char *)
Nereikalingas .ctor (Char *, Int32, Int32)
Negalima .ctor (SByte *)
Negalima .ctor (SByte *, Int32, Int32)
Negalima .ctor (SByte *, Int32, Int32, System.Text.Encoding)
Void .ctor (Char, Int32)
Void .ctor (System.ReadOnlySpan`1 [System.Char])

Spausdinimo metodai

Pavyzdys:

naudojant sistemą naudojant „System.Reflection“ viešosios klasės „PrintMethods“ {public static void Main () {Tipas t = typeof (System.String) Console.WriteLine ('{0} type ...', t metodai MethodInfo [] ci = t .GetMethods (BindingFlags.Public | BindingFlags.Instance) foreach (MethodInfo m in ci) {Console.WriteLine (m)}}}

// Rezultatas:

Sistemos metodai. Stygos tipas ...
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) ......

Spausdinimo laukai

Pavyzdys:

naudojant sistemą naudojant „System.Reflection“ viešąją klasę „PrintFields“ {public static void Main () {Tipas t = typeof (System.String) Console.WriteLine ('Laukai {0} type ...', t) FieldInfo [] ci = t .GetFields (BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic) foreach (FieldInfo f in ci) {Console.WriteLine (f)}}}

// Rezultatas:

Sistemos laukai. Stygos tipas ...
Sistema. Eilutė tuščia

Dabar pereikime prie pažangių C # programavimo koncepcijų

Išplėstinės C # sąvokos

Anoniminė funkcija

Vadinama funkcija, kuriai trūksta konkretaus pavadinimo Anoniminis Funkcijos. C # yra dviejų tipų anoniminių funkcijų

  • Lambda išraiškos
  • Anoniminiai metodai

Pavyzdys:

naudojant sistemos vardų sritį „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)}}}

// Rezultatas:

Kvadratas: 625

Anoniminiai metodai

The anoniminis metodas teikia tą pačią funkciją kaip ir a lambda išraiška, išskyrus tai, kad tai leidžia mums nepaisyti parametrų sąrašo.

Pavyzdys:

naudojant sistemos vardų sritį „AnonymousMethods“ {klasės programa {public delegate void AnonymousFun () static void Main (string [] args) {AnonymousFun fun = delegate () {Console.WriteLine ('This is anonymous function')} fun ()}}}

// Rezultatas:

Tai anoniminė funkcija

Keli siūlai

Daugiagijais procesas yra procesas, kai sukuriamos ir priskiriamos kelios gijos skirtingoms užduotims atlikti. tai taupo laiką atliekant kelis darbus vienu metu. Kelių sriegių klasė yra Sistema. Sriegimas vardų sritis.

Sistema. Vardų srities gija

The Sistema. Sriegimas vardų srityje yra klasės ir sąsajos, palengvinančios daugialypį gijimą. Tai suteikia klases sinchronizuoti gijos išteklius. Žemiau pateikiamas dažniausiai naudojamų klasių sąrašas:

  • Siūlas
  • Mutex
  • Laikmatis
  • Monitorius
  • Semaforas
  • „ThreadLocal“
  • „ThreadPool“
  • Nepastovus

Procesas ir siūlai

Procesas yra iš tikrųjų ir taikymas ir tai laikoma a sunkiasvoris komponentas. Kita vertus, siūlas yra vienas modulis visos paraiškos. tai yra lengvas palyginti su procesu

Gijos gyvavimo ciklas

Kiekviena gija turi savo gyvenimo ciklą. Gijos gyvavimo ciklas yra apibrėžtas sistemoje „System.Threading.Thread“. Toliau pateikiami bet kurių siūlų gyvenimo ciklo etapai.

  • Nepradėtas
  • Vykdomas (paruoštas paleisti)
  • Bėgimas
  • Nepaleidžiama
  • Miręs

„Thread“ klasėje pateikiamos šios savybės ir metodai:

Siūlų ypatybės

Nuosavybė apibūdinimas
„CurrentThread“ grąžina šiuo metu vykdomos gijos egzempliorių.
Gyvas patikrina, ar dabartinė gija gyva, ar ne.
„Isback“ Norėdami gauti / nustatyti dabartinės gijos vertę, tai yra fone arba ne.
„ManagedThreadId“ naudojamas norint gauti unikalų šiuo metu valdomos gijos ID.
vardas yra naudojamas norint gauti arba nustatyti dabartinės gijos pavadinimą.
Prioritetas yra naudojamas norint gauti arba nustatyti dabartinės gijos prioritetą.
„ThreadState“ naudojamas grąžinti gijos būseną atspindinčią vertę.

Siūlų metodai

Metodas apibūdinimas
Abortas () naudojamas sriegiui nutraukti. Tai kelia „ThreadAbortException“.
Nutraukti () naudojamas pertraukti giją, kuri yra „WaitSleepJoin“ būsenoje.
Prisijunkite () yra naudojamas blokuoti visas skambinančias gijas, kol ši gija baigsis.
ResetAbort () naudojamas atšaukti dabartinės gijos nutraukimo užklausą.
Tęsti() yra naudojamas atnaujinti pakabintą siūlą. Tai pasenusi.
Miego režimas (Int32) naudojamas sustabdyti dabartinę giją nurodytomis milisekundėmis.
Pradžia () pakeičia dabartinę gijos būseną į Runnable.
Laikinai sustabdyti () sustabdo dabartinę giją, jei ji nėra sustabdyta. Tai pasenusi.
Išeiga () yra naudojamas dabartinei gijai vykdyti kitai gijai.

Pagrindinės gijos pavyzdys

naudojant sistemą naudojant „System.threading public class Edureka {public static void Main (string [] args) {Thread t = Thread.CurrentThread t.Name = 'MainThread' Console.WriteLine (t.Name)}}

// Rezultatas:

„MainThread“

Išimčių tvarkymas

The išimtis yra programos vykdymo metu išmetama klaida. Mes atliekame išimčių tvarkymą, kad mūsų programa būtų nemokama.

Išimtis apibūdinimas
System.DivideByZeroException Klaida, sukurta dalijant skaičių su nuliu.
System.NullReferenceException tvarko klaidą, sukurtą nurodant nulinį objektą.
System.InvalidCastException tvarko klaidą, kurią sugeneravo netinkamas spausdinimas.
System.IO.IOException tvarko įvesties / išvesties klaidas.
„System.FieldAccessException“ Klaida, kurią sugeneravo neteisinga privati ​​/ saugoma prieiga.

C #, norėdami atlikti, naudojame 4 raktinius žodžius išimčių tvarkymas:

  • bandyti
  • pagauti
  • pagaliau ir
  • mesti
Pavyzdys:
naudojant sistemos viešąją klasę „EdurekExample“ {public static void Main (string [] args) {try {int a = 10 int b = 0 int x = a / b} catch (e išimtis) {Console.WriteLine (e)} Console.WriteLine („Šis pranešimas yra iš blokavimo bloko“)}}

// Rezultatas:

System.DivideByZeroException: bandyta padalyti iš nulio.
at ExExaEdurekample.Main (String [] args) in F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: 10 eilutė
Šis pranešimas yra iš blokavimo bloko

Individualus išimties pavyzdys

naudojant sistemos viešąją klasę „InvalidAgeException“: išimtis {public InvalidAgeException (eilutės pranešimas): bazė (pranešimas) {}} viešoji klasė pritaikyta {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.') } } 

// Rezultatas:

InvalidAgeException: Deja, tikimasi, kad amžius bus didesnis nei 18 metų
adresu Customized.validate (Int32 age) F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: 18 eilutė
ne Customized.Main (String [] argumentai) F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: 23 eilutė
Dabar vykdomas blokavimo blokas.

Pagaliau blokuokite pavyzdį

naudojant sistemos viešąją klasę „FinalExecption“ {public static void Main (string [] args) {try {int a = 10 int b = 0 int x = a / b} catch (e išimtis) {Console.WriteLine (e)} pagaliau {Console .WriteLine ('Pagaliau vykdomas blokas')} Console.WriteLine ('Vykdomas blokavimo blokas')}}

// Rezultatas:

System.DivideByZeroException: bandyta padalyti iš nulio.
ne FinalExecption.Main (eilutė [] argumentai) F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: 10 eilutė
Pagaliau vykdomas blokavimas
Vykdomas sugavimo blokas

Sistemos išimties parašas

[SerializableAttribute] [ComVisibleAttribute (true)] viešosios klasės „SystemException“: išimtis

Sistemos išimties konstruktoriai

Statybininkas apibūdinimas
„SystemException“ () Jis naudojamas norint inicijuoti naują „SystemException“ klasės egzempliorių.
„SystemException“

(„SerializationInfo“, „StreamingContext“)

Jis naudojamas inicijuojant naują „SystemException“ klasės egzempliorių su serijiniais duomenimis.
„SystemException“ (eilutė) Jis naudojamas inicijuojant naują „SystemException“ klasės egzempliorių su nurodytu klaidos pranešimu.
„SystemException“ (eilutė, išimtis) Jis naudojamas inicijuojant naują „SystemException“ klasės egzempliorių su nurodytu klaidos pranešimu ir nuoroda į vidinę išimtį, kuri yra šios išimties priežastis.

Sistemos išimties ypatybės

Nuosavybė apibūdinimas
Duomenys Jis naudojamas norint gauti raktų / reikšmių porų rinkinį, kuriame pateikiama papildoma vartotojo apibrėžta informacija apie išimtį.
„HelpLink“ Jis naudojamas norint gauti arba nustatyti nuorodą į pagalbos failą, susietą su šia išimtimi.
HRrezultatas Jis naudojamas norint gauti ar nustatyti HRESULT - koduotą skaitinę vertę, priskiriamą konkrečiai išimčiai.
„InnerException“ Jis naudojamas norint gauti išimties egzempliorių, dėl kurio atsirado dabartinė išimtis.
Pranešimas Jis naudojamas norint gauti pranešimą, apibūdinantį dabartinę išimtį.
Šaltinis Jis naudojamas norint gauti arba nustatyti programos, kuri sukelia klaidą, pavadinimą.
„StackTrace“ Jis naudojamas norint gauti tiesioginių rėmelių eilutę stulpelyje.
„TargetSite“ Jis naudojamas norint gauti metodą, kuris išmeta dabartinę išimtį.

Sistemos išimčių metodai

Metodai apibūdinimas
Lygus (objektas) Jis naudojamas patikrinti, ar nurodytas objektas yra lygus dabartiniam objektui, ar ne.
Baigti () Jis naudojamas norint išlaisvinti išteklius ir atlikti valymo operacijas.
„GetBaseException“ () Jis naudojamas norint gauti šaknų išimtį.
„GetHashCode“ () Jis naudojamas maišos kodui gauti.
„GetObjectData“

(„SerializationInfo“, „StreamingContext“)

Jis naudojamas objekto duomenims gauti.
„GetType“ () Jis naudojamas norint gauti dabartinio egzemplioriaus vykdymo laiką.
„MemberwiseClone“ () Jis naudojamas norint sukurti negilų dabartinio objekto kopiją.
„ToString“ () Jis naudojamas kuriant ir grąžinant dabartinės išimties eilutę.

Sistemos išimties pavyzdys

naudojant sistemos vardų sritį CSharpProgram {class SystemExceptionExample {static void Main (string [] args) {try {int [] arr = new int [5] arr [10] = 25} catch (SystemException e) {Console.WriteLine (e)} }}}

// Rezultatas:

„System.IndexOutOfRangeException“: indeksas buvo už masyvo ribų.
CSharpProgram.SystemExceptionExample.Main (String [] argumentai) F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: 11 eilutė

Sinchronizavimas

Sinchronizavimas gali būti technika, leidžianti tik 1 gijai pasiekti išteklių tam tikrą laiką. Nė viena alternatyvi gija nenutrūks, kol paskirta gija nebaigs savo užduoties.

Daugialypėje programoje siūlai yra leidžiamiprieiti prie bet kurionurodytas vykdymaslaikas. Gijos dalijasi ištekliais ir vykdo asinchroniškai. Prieiga prie bendrinamų išteklių (duomenų)gali būti svarbi užduotiskad apskritaigalėtų sustotisistema.mes turime tendenciją tai daryti įtakąsinchroniškai kuriant gijas.

Pavyzdys be sinchronizavimo

naudojant Sistemą naudojant Sistemą. „Edureka“ klijavimo klasė {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() } } 

// Rezultatas:

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

Pavyzdys su sinchronizavimu

naudojant sistemą naudojant sistemą. „Edureka“ klasės gija. „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() } } 

// Rezultatas:

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

Naujos savybės

„Microsoft“ prie C # kalbos pridėjo daugybę naujausių funkcijų, kai kurios iš jų yra paminėtos toliau.

C # 6.0

  • Naudojant statinę direktyvą
  • Išimčių filtrai
  • Laukite gaudant / galiausiai blokuojame
  • Auto nuosavybės iniciatoriai
  • Numatytosios tik „Getter“ savybių vertės
  • Išraiškos kūno nariai
  • Nulinis skleidėjas
  • Styginių interpoliacija
  • Operatoriaus pavadinimas
  • Žodyno inicialas
  • Kompiliatorius kaip paslauga (Roslyn)

C # 7.0

  • Rašto derinimas
  • Tuples
  • Dekonstrukcija
  • Vietos funkcijos
  • Skaitmenų skyriklis
  • Dvejetainiai pažodžiai
  • Ref grįžta ir vietiniai
  • Išraiškos konstrukcijos konstruktoriai ir užbaigėjai
  • Išraiškos formos getters ir seteriai
  • Iš kintamųjų
  • Apibendrinti asinchroninio grąžinimo tipai

C # 7.1

  • Async main
  • Numatytieji posakiai

Interviu klausimai, pagrįsti C #

Svarbų interviu Klausimus, pagrįstus C # programavimo kalba, rasite šiame atnaujintame .

Tuo mes baigėme šį straipsnį „C # Tutorial“. Tikiuosi, kad supratote duomenų struktūrų, sintaksės, funkcionalumo ir operacijų, atliekamų naudojant jas, svarbą. Dabar, kai per tai supratote C # programavimo pagrindusC # pamoka, patikrinkite teikiami mokymai pateikė Edureka apie daugelį technologijų, tokių kaip „Java“, Pavasaris ir daugelisPatikima internetinė mokymosi įmonė, turinti daugiau nei 250 000 patenkintų besimokančiųjų tinklą visame pasaulyje, gavo klausimas mums? Paminėkite tai šio „C # Tutorial“ tinklaraščio komentarų skyriuje ir mes kuo greičiau susisieksime su jumis.