C # Tutorial: De grundlæggende ting, du har brug for for at mestre C #



Denne artikel om C # -studie hjælper dig med en detaljeret viden om C # -fundamentals sammen med eksempler i realtid for en bedre forståelse.

C # er alsidig og det robuste programmeringssprog udviklet af Microsoft Corporation i år 2000 som en dødbringende konkurrent til Java. Det er mest populært og et dominerende programmeringssprog, når det kommer til både webudvikling såvel som desktop applikationsudvikling.

I denne C # -studie lærer vi følgende begreber.





C # Grundlæggende

Introduktion til C # programmeringssprog

Tilbage i begyndelsen af ​​90'erne var Java det førende programmeringssprog til webudvikling, desktop applikationsudvikling og mange andre områder. Microsoft ønskede at komme med en konkurrent med mange avancerede funktioner, der kan efterlade Java langt bagefter.



C#-Tutorial-hejlsberg_bio

Det var i år 2000, Anders Hejlsberg og hans Microsoft-team kom op med ideen om C # populært kaldet C-Sharp. Dette initiativ blev godkendt af Den Internationale Standardorganisation (STOR) og European Computer Manufacturers Association (ECMA). og til sidst kommer C # ind i en verden af ​​softwareudvikling.

Funktioner i C # programmeringssprog



  • Objektorienteret programmeringssprog

Objektorienteret programmeringstilgang er det, der gør C # skarpt til at være det mest programmørvenlige og let at udvikle og vedligeholde programmeringssprog.

  • Typesikkert sprog

Betydningen af ​​Type-Safe er, at compileren kun får adgang til den hukommelsesplacering, der har tilladelse til at udføre. Denne funktion forbedrer kodesikkerheden til et eksponentielt niveau.

  • Interoperabilitet

Funktionen ved interoperabilitet gør C # i stand til at gøre alt, hvad der er hjemmehørende i C ++, på en mere effektiv måde, der kan overgå C ++ selv.

  • Rigt bibliotek

C # giver adgang til flere antal indbyggede biblioteker, der leverer forprogrammerede funktioner for at reducere den tid, der bruges i udviklingsprocessen.

  • Skalerbar og opdaterbar

C # blev designet til at være bedre end de andre programmeringssprog. Derfor er det altid åbent for opdateringer, og det holder sig meget skalerbart med sine funktioner.

  • Komponentorienteret

Udviklerne hos Microsoft brugte den komponentbaserede tilgang til at udvikle C #. Dette er den mest fremherskende udviklingsmetode for at holde C # meget skalerbar og opdateret.

  • Struktureret sprog

Den strukturerede programmeringsmetode foretrækkes under softwareudviklingens livscyklus, da det bliver let at udvikle kompilering og implementering af softwaren sammenlignet med den procedureorienterede programmeringsmetode.

  • Hurtig

C # Programmering sker tilfældigvis hurtigere i kompilering og udførelse sammenlignet med C ++ og andre programmeringssprog.

Installation

Det er bevist Microsoft Visual Studio er den bedste i klasseditor til C # -programmering. Vi installerer og konfigurerer Microsoft Visual Studio til udførelse af vores C # -programmer ved at følge nedenstående trin:

Trin 1 : Download Microsoft Visual Studio

Google til seneste version af Visual Studio og download installere fil til dit lokale system og derefter løb installationsfilen som en administrator.

Trin 2: Vælg .NET Desktop Development Package

Når du har kørt installationsprogrammet, downloades Visual Studio Editor med succes til dit lokale system. Senere vises en dialogboks på skrivebordets skærm, der beder fjende om bestemt pakke du har brug for i dit system. Her skal du vælge .NET Desktop Udvikling pakke.

Trin 3: Indstil C # miljø

Når dine pakker til .NET Udvikling downloades, vises en anden dialogboks på din skærm, der beder om det udviklingsmiljø, du leder efter. Her skal du vælg miljøet for C #.

Trin 4: Opret dit første projekt

Når miljøet er indstillet, er I alle klar til at gå. Start dit Visual Studio, og vælg oprette nyt projekt i den viste dialogboks.

Du omdirigeres til den næste dialogboks, og der skal du vælge Klassebibliotek som .NET Standard som vist nedenfor.

I den næste dialogboks bliver du bedt om det Konfigurer dit projekt . Konfigurer det, og du er nu i Editor. Skriv dit første program og løb det. Outputtet vises med succes på Kommandoprompt.

ved hjælp af systemklasse Edureka {static void Main (string [] args) {Console.WriteLine ('Welcome to Edureka !, Happy Learning ..!')}}

//Produktion:

Lad os udføre vores første C # -program.

C # Programstruktur

Nu hvor vi har udført vores første C # -program, lad os forstå dets struktur i detaljer. Et simpelt C # -program har følgende dele.

ved hjælp af systemnavneområdet ConsoleApplication1 {public class Edureka {public static void Main (string [] args) {Console.WriteLine ('Welcome to Edureka !, Happy Learning ..!')}}}

//Produktion:

Velkommen til Edureka !, Happy Learning ..!

  • klasse: klasse kan generelt defineres som en nøgleord der bruges til at definere en klasse i C # -programmet.
  • Edureka: Det er navnet på Klasse. Klasse betragtes ofte som en plan, der gemmer medlemmerne og metoderne relateret til klassen.
  • Hoved: Dybest set er det primær metode af hele C # -programmet fungerer det som gateway for styringen til at komme ind i programmet. Det udføres, før nogen anden metode til programmet udføres.
  • ugyldig: Dette segment af koden er udpeget til returtype af metoden. Det kan være enhver anden datatype end ugyldig. Void betyder, at metoden ikke har nogen data, der returneres fra den.
  • statisk: Dette er en nøgleord hvilket siger, at de erklærede datamedlemmer er statiske, og at en dedikeret hukommelse er tildelt de erklærede medlemmer.
  • Streng [] argumenterer: Det ligner de kommandolinjeargumenter, som vi bruger i vores program. Mens vi udfører vores program, videregiver vi dybest set nogle argumenter, som vil blive accepteret af programmet på grund af denne erklæring.
  • System.Console.WriteLine (“Velkommen til Edureka !, Happy Learning ..!”) Her, System er navneområde. Konsollener den kategori, der er skitsereti systemnavneområdet. Det WriteLine () er detstatiskteknikaf konsollenkategori, der bruges til at nedskriveteksten på konsollen.

Lad os nu lære de datatyper, der er tilgængelige i C #.

Datatyper

Datatyperne i C # er opdelt i tre kategorier er beskrevet nedenfor.

Værdi Datatyper

Det Værdi Datatyper er placeret i System.ValueType Bibliotek og er altid klar til direkte adgang, og variabler kan tildeles direkte til en bestemt værdi. Værdidatatyperne klassificeres yderligere i to typer som vist nedenfor:

  • Foruddefinerede datatyper
  • Brugerdefinerede datatyper

Foruddefinerede datatyper: Det er dem, vi normalt bruger i vores daglige programmering. Disse datatyper er foruddefineret af sprogudviklerne og holdes klar til brug for programmørerne.

Eksempel:

int, float, char, kort dobbelt osv

Brugerdefinerede datatyper: Der er situationer, hvor vi muligvis skal gemme forskellige værdier fra datatyper i en enkelt variabel. I disse tilfælde er Foruddefinerede datatyper er ikke bare nok. Brugerdefineret Datatyper er som brugerdefinerede datatyper.

Eksempel: Struktur, Enum

Datatype Område for den tildelte hukommelse Hukommelsesstørrelse
underskrevet char -128 til 127 1 byte
usigneret char 0 til 127 1 byte
char -128 til 127 1 byte
underskrevet kort -32,768 til 32,767 2 Bytes
usigneret kort 0 til 65.535 2 Bytes
kort -32,768 til 32,767 2 Bytes
underskrevet int -2,147,483,648 til -2,147,483,647 4 Bytes
usigneret int 0 til 4.294.967.295 4 Bytes
int -2,147,483,648 til -2,147,483,647 4 Bytes
underskrevet lang -9.223.372.036.854.775.808 til 9.223.372.036.854.775.807 8 byte
usigneret lang 0 til 18.446.744.073.709.551.615 8 byte
lang -9.223.372.036.854.775.808 til 9.223.372.036.854.775.807 8 byte
flyde 1,5 * 10-45 - 3,4 * 1038, (7-cifret præcision) 4 Bytes
dobbelt 5,0 * 10-324 - 1,7 * 10308, (15-cifret præcision) 8 byte
decimal -7,9 * 10-28 - 7,9 * 1028, (28-cifret præcision) 16 Bytes


Pointer Datatype

Pointer Type er en simpel datatype. Dens funktionalitet ligner helt pointerne i C. De er designet til at gemme adressen på en anden markør.

flyde * ptr

Reference Datatyper

Navnet er selvforklarende. Det Reference Datatyper faktisk gemmer ikke variablerne, i stedet gemmer de referenceværdien til den pågældende variabel. Med andre ord gemmer de adressen på den aktuelle variabel.

Referencevariablerne er klassificeret i tre forskellige typer som nævnt nedenfor:

  • Objekt type

Objektdatatypen er tilgængelig i System. Objekt Klasse.Objektettypermåsketildelt tilværdier afde andre typer,referencetyper, foruddefineret, brugerdefinerettyper. Men føropgaveværdier, det kræver type konvertering.

objekt abc abc = 50 // dette kaldes boksning
  • Dynamisk type

Dynamiske typevariabler er designet til at gemme næsten alle typer værdier. Det kaldes som dynamisk type, fordi typekontrollen af ​​værdier finder sted i løbetid

dynamisk x = 10
  • String Type

Stringtypen er tilgængelig i System.Streng klasse. Stringtypen er designet til at gemme strenglitteraler. String Literals er gemt i to former ito former

    • citeret
    • @citeret.
Streng S = 'Edureka'
  • Det @citeret streng bogstavelig ser ud
@ 'Edureka'

Lad os nu forstå variablerne.

Variabler

Variabler er de navne, der er tildelt til hukommelsesplaceringen, der gemmer bestemte data givet af brugeren, og at data er let tilgængelige ved hjælp af variabelnavnet. Der er fem typer variabler tilgængelige i C #

Type Eksempel
Nul Nul data
Boolsk Sandt og falskt
Heltal Int, Char, Byte, Short, Long
Flyde Flyde og dobbelt
Decimal Decimal

Eksempel:

int a, b dobbelt x float p char abc

Regler, der skal følges for at erklære variabler i C #

  • En variabel kan omfatte alfabeter, cifre og understregninger.
  • Et variabelnavn kan kun starte med et alfabet eller en understregning.
  • Variabler kan ikke starte med et ciffer eller specialtegn.
  • Hvide mellemrum er ikke tilladt mellem variabelnavnet.
  • Reserverede nøgleord er begrænset fra at blive brugt som variabelnavne.

Operatører

En operatør kan defineres som et specielt symbol, der forklarer computeren til at udføre en bestemt matematik er en logisk operation på et sæt variabler. C # inkluderer en række operatører, der er nævnt som nedenfor.

  • Aritmetiske operatører
  • Relationelle operatører
  • Logiske operatører
  • Bitvise operatører
  • Opgaveoperatører

Aritmetiske operatører

Operatør Eksempel Beskrivelse
+ A + B. Tilføjer to operander
- A - B Substrakterer to operander
* A * B Multipler to operationer
/ A / B Opdeler to operander
% A% B Resten af ​​to operationer
++ A ++ Inkrement operation
- TIL- Reduktion operation

Relationelle operatører

Operatør Eksempel Beskrivelse
== A == B Sandt nok, hvis begge operander er ens, Else False
! = A! = B Sandt nok, hvis begge operander ikke er ens, Else False
> A> B Det er sandt, hvis A er større, ellers falsk
< TIL Sandt nok, hvis B er større, ellers falsk
> = A> = B Det er sandt, hvis A er større eller lig med, ellers falsk
<= TIL<= B Sandt nok er id B større, ligesom falsk

Logiske operatører

Operatør Eksempel Beskrivelse
&& A && B. Sandt nok, hvis begge operander er sande, Else False
|| A || B Sandt nok, hvis en af ​​operanderne er sandt, ellers falsk
! A! B Vender operandens logiske tilstand

Bitvise operatører

TIL B A & B A | B A ^ B
en en en en 0
en 0 0 en en
0 en 0 en en
0 0 0 0 0
Operatør Eksempel Beskrivelse
~ (~ A) Binary One's Complement Operator er unary og har den virkning at 'vende' bits.
<< TIL<<2 Binær venstre skiftoperatør. Den venstre operandværdi flyttes til venstre med antallet af bits, der er angivet af den højre operand.
>> A >> 2 Binær Right Shift-operatør. Den venstre operands værdi flyttes til højre af antallet af bits, der er angivet af den højre operand.

Opgaveoperatører

Operatør Eksempel Beskrivelse
= A = B + C A = B + C, B + C tildeles A
+ = A + = B A = A + B, A + B tildeles A
- = A - = B A = A-B, A-B tildeles A
* = A - = B A = A * B, A * B tildeles A
/ = A / = B A = A / B, A / B tildeles A
% = A% = B A = A% B, A% B tildeles A
<<= TIL<<= 2 Venstre skift og tildelingsoperatør
>> = A >> = 2 Højre skift og tildelingsoperatør
& = A & = 2 Bitvis og tildelingsoperatør
^ = A ^ = 2 Bitwise Exclusive og Assignment Operator
| = A! = 2 Bitwise inkluderende og tildelingsoperatør

Sløjfer

TIL løkke sætning bruges til at udføre en blok med udsagn gentagne gange, indtil en bestemt betingelse er opfyldt. C # -sprog består af følgende sløjfedeklarationer.

  • For Loop
  • Mens Loop
  • Gør Mens Loop

For Loop

Det til løkke bruges til at udføre et bestemt kodesegment flere gange, indtil den givne betingelse er opfyldt.

Syntaks

til (initialiseringstilstandsforøgelse / -reduktion) {// kodesegment}

FlowChart:

Eksempel:

ved hjælp af System offentlig klasse Foreksempel {public static void Main (string [] args) {for (int i = 1 i<= 5 i++) { Console.WriteLine(i) } } } 

//Produktion:

en
2
3
4
5

Mens Loop

Det Mens løkke bruges til at udføre et kodesegment flere gange, indtil en bestemt tilstand er opfyldt.

Syntaks

mens (betingelse) {// kode, der skal udføres}

FlowChart:

Eksempel:

ved hjælp af System namespace Loops {class Program {static void Main (string [] args) {int x = 5 while (x<= 10) { Console.WriteLine('The value of a: {0}', x) x++ } Console.ReadLine() } } } 

//Produktion:

Værdien af ​​a: 5
Værdien af ​​a: 6
Værdien af ​​a: 7
Værdien af ​​a: 8
Værdien af ​​a: 9
Værdien af ​​a: 10

Gør Mens Loop

Gør mens sløjfe er helt lig While Loop, men den eneste forskel er, at tilstanden er placeret i slutningen af ​​sløjfen. Derfor udføres sløjfen mindst én gang.

Syntaks

udfør {// kode, der skal udføres} mens (betingelse)

FlowChart:

Eksempel:

ved hjælp af systemnavneområde 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, produkt) i ++} mens (i<= 10) } } } 

//Produktion:

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

Betinget

Betingede udsagn bruges til at udføre udmelding eller gruppe af udsagn baseret på en eller anden tilstand. Hvis tilstand er sandt da C # udsagn udføres ellers den næste udmelding vil blive udført.

Forskellige typer betingede udsagn i C ++ sprog er som følger:

  1. Hvis udsagn
  2. Hvis-andet udsagn
  3. Indlejret if-else-erklæring
  4. Hvis-Ellers hvis stige
  5. Skift erklæring

Hvis udsagn

Singlen hvis sætning i C # sprog bruges til at udføre koden, hvis en betingelse er sand. Det kaldes også envejsudvælgelseserklæring.

Syntaks

if (boolean-expression) {// sætninger udført, hvis boolean-expression er sandt}

FlowChart:

Eksempel:

Brug af systemnavneområde Betinget {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.') } } } 

//Produktion:

2 er mindre end 5
Denne erklæring udføres altid.

Hvis-andet udsagn

Det hvis ellers sætning på C-sprog bruges til at udføre koden, hvis betingelsen er sand eller falsk. Det kaldes også tovejs udvælgelseserklæring.

Syntaks

hvis (boolsk-udtryk) {// udsagn udføres, hvis boolsk-udtryk er sandt} ellers {// udsagn udført, hvis boolsk-udtryk er falsk}

FlowChart:

Eksempel:

ved hjælp af systemnavneområde Betinget {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.') } } } 

//Produktion:

12 er større end eller lig med 5
Denne erklæring udføres altid.

Indlejret if-else-erklæring

Den indlejrede hvis ellers erklæring bruges, når et program kræver mere end et testudtryk. Det kaldes også en flervejsudvælgelseserklæring. Når en række af beslutningen er involveret i en erklæring, bruger vi hvis ellers erklæring i indlejret form.

Syntaks

hvis (boolsk-udtryk) {hvis (indlejret-udtryk-1) {// kode, der skal udføres} andet {// kode, der skal udføres}} andet {hvis (indlejret-udtryk-2) {// kode, der skal udføres } andet {// kode, der skal udføres}}

FlowChart:

Eksempel:

ved hjælp af systemnavneområde Betinget {klasse Indlejret {offentlig statisk tomrum Main (streng [] args) {int først = 7, andet = -23, tredje = 13 hvis (første & GT sekund) {hvis (første

//Produktion:

13 er den største

Ellers hvis stige

Det hvis-ellers-hvis erklæring bruges til at udføre en kode fra flere forhold. Det kaldes også flervejsbeslutningserklæring. Det er en kæde af if..else udsagn, hvor hver if-sætning er forbundet med andet hvis udsagn og sidste ville være et andet udsagn.

Syntaks

hvis (betingelse1) {// kode, der skal udføres, hvis betingelse1 er sandt} ellers, hvis (betingelse2) {// kode, der skal udføres, hvis betingelse2 er sandt} ellers, hvis (betingelse3) {// kode, der skal udføres, hvis betingelse3 er sandt} ... ellers {// kode, der skal udføres, hvis alle betingelser er falske}

FlowChart:

Eksempel:

ved hjælp af systemklasse Edureka {public static void Main (String [] args) {int i = 20 if (i == 10) Console.WriteLine ('i is 10') ellers hvis (i == 15) Console.WriteLine (' jeg er 15 ') andet hvis (i == 20) Console.WriteLine (' i er 20 ') ellers Console.WriteLine (' i er ikke til stede ')}}

//Produktion:

jeg er 20

Skift erklæring

Kontakt erklæring fungerer som erstatning for en lang, hvis-ellers-hvis stige, der bruges til at teste en liste over sager. En switch-sætning indeholder en eller flere case-labels, der testes mod switch-udtrykket. Når udtrykket matcher en sag, udføres de tilknyttede udsagn med den sag.

Syntaks

switch (variabel / udtryk) {sagsværdi1: // Udsagn udføres, hvis udtryk (eller variabel) = værdi1 bryder sagsværdi2: // Udsagn udføres, hvis udtryk (eller variabel) = værdi1 bryder ... ... ... .. ... ... standard: // Erklæringer udført, hvis ingen sager stemmer overens}

FlowChart:

Eksempel:

ved hjælp af systemnavneområde Betinget {class SwitchCase {public static void Main (string [] args) {char ch Console.WriteLine ('Enter an alphabet') ch = Convert.ToChar (Console.ReadLine ()) switch (Char.ToLower (ch )) {case 'a': Console.WriteLine ('Vowel') break case 'e': Console.WriteLine ('Vowel') break case 'i': Console.WriteLine ('Vowel') break case 'o': Console.WriteLine ('Vowel') break case 'u': Console.WriteLine ('Vowel') break default: Console.WriteLine ('Not a vowel') break}}}}

//Produktion:

Indtast et alfabet
er
Vokal

Strenge

Snor Datatype er medlem af System.Streng Klasse. Det er i stand til at gemme karaktertype data. Vi kan udføre forskellige operationer på Stings såsomsammenkædning, sammenligning, hentning af substring, søgning, trimning, udskiftning og mange flere.

Analogien mellem streng og streng

I C # Snor og snor er ækvivalente. Ordstrengen er en nøgleord og fungerer som System.Streng klasse. Vi kan bruge en af ​​versionerne til at erklære strenge.

Syntaks:

streng s1 = 'Edureka' // opretter streng ved hjælp af streng nøgleord String s2 = 'Happy Learning' // opretter streng ved hjælp af klasse String

Eksempel:

ved hjælp af System offentlig klasse 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 '} streng s2 = ny streng (ch) Konsol.WriteLine ( s1) Console.WriteLine (s2)}}

//Produktion:

Edureka
Csharp Tutorial

Strengmetoder i C #

Metode Beskrivelse
Klon () Bruges til at returnere en henvisning til denne forekomst af streng.
Sammenlign (String, String) Bruges til at sammenligne to specificerede strengobjekter.
Concat (streng, streng) Sammenkæd to specificerede forekomster af streng.
Indeholder (streng) Returner en værdi, der angiver en specificeret understreng
Kopi (streng) Bruges til at oprette en ny forekomst af streng med samme værdi
CopyTo (Int, Char [], Int, Int) Kopierer tegn fra en bestemt position
Lige (streng, streng) Bestemmer, at to strengobjekter har den samme værdi.
Format (streng, objekt) Udskift et eller flere formatelementer i en specificeret streng
IndexOf (streng) Rapporterer det nulbaserede indeks for den første forekomst
Indsæt (Int32, streng) Returnerer en ny streng, hvor en streng indsættes i et indeks.
IsInterned (String) Angiver, at denne streng er i Unicode-normaliseringsform C.
ErNullOrEmpty (streng) Angiver, at den angivne streng er nul eller en tom streng.
IsNullOrWhiteSpace (streng) Bruges til at angive, om en specificeret streng er nul, tom,
Deltag (String, String []) Bruges til at sammenkæde alle elementerne i en streng array
LastIndexOf (Char) Rapporterer den nulbaserede indeksposition for det sidste tegn
LastIndexOfAny (Char []) Rapporterer den nulbaserede indeksposition for det sidste tegn
Fjern (Int32) Returnerer en ny streng, hvor alle tegnene vises
Udskift (streng, streng) Returnerer en ny streng, hvor alle forekomster af en streng
Split (Char []) Det bruges til at opdele en streng i understrenge
StartsWith (String) Det bruges til at kontrollere, om begyndelsen af ​​denne streng
Understreng (Int32) Det bruges til at hente en substring fra denne forekomst.
ToCharArray () Kopierer tegnene i dette tilfælde til et Unicode-array.
ToString () Det bruges til at returnere forekomsten af ​​streng.
Trimme() Trimmer snoren


Arrays

I lighed med andre programmeringssprog har C # arrays. Arrays er de enkle datastrukturer, der er designet til at gemme den samme datatype af elementer et sammenhængende hukommelsessted.

C # understøtter følgende Array-typer.

  • Single Dimensional Array
  • Flerdimensionel matrix
  • Jagged Array

Single Dimensional Array

Single Dimensional Array gemmer elementer i form af en enkelt række.

Syntaks

int [] arr = ny int [5] // opretter matrix

Eksempel:

ved hjælp af System offentlig klasse ArrayExample {public static void Main (string [] args) {int [] arr = new int [5] arr [0] = 10 arr [1] = 20 arr [2] = 30 arr [3] = 40 arr [4] = 50 for (int i = 0 i 

//Produktion:

10
tyve
30
40
halvtreds

Flerdimensionel matrix

Multidimensional Array gemmer elementer i form af flere dimensioner som en matrix og en terning osv.

Syntaks

int val = a [2,3]

Eksempel:

ved hjælp af systemnavneområde 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 for (i = 0 i<5 i++) { for (j = 0 j < 2 j++) { Console.WriteLine('a[{0},{1}] = {2}', i, j, a[i, j]) } } Console.ReadKey() } } } 

//Produktion:

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 er simpelthen en række arrays.

Eksempel:

ved hjælp af systemnavneområde ArrayApplication {class MyArray {static void Main (string [] args) {int [] [] a = new int [] [] {new int [] {0,0}, new int [] {1,2 }, ny int [] {2,4}, ny int [] {3, 6}, ny int [] {4, 8}} int i, j for (i = 0 i<5 i++) { for (j = 0 j < 2 j++) { Console.WriteLine('a[{0}][{1}] = {2}', i, j, a[i][j]) } } Console.ReadKey() } } } 

//Produktion:

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

Samlinger

Samling kan simpelthen betragtes som en gruppe af objekter, der er samlet sammen for at anvende nogle funktioner på de indsamlede data. De operationer, der en gang muligvis udføres på en samling er,

  • gem objekt
  • opdater objekt
  • slet objekt
  • hente objekt
  • søgeobjekt og
  • sorter objekt

Typer af samlinger

Der er tre forskellige muligheder for at arbejde med samlinger. De tre navneområder er nævnt nedenfor:

  • System.Collections.Generic klasser
  • System.Collections klasser
  • System.Collections.Concurrent klasser

System.Collections.Generic Class har følgende varianter af klasser:

  • Liste
  • Stak
  • LinkedList
  • HashSet
  • SortedSet
  • Ordbog
  • SortedDiction
  • SortedList

Det System.Collections klasser betragtes som ældre klasser. de inkluderer følgende klasser.

  • ArrayList
  • Stak
  • Hashtable

Det System.Collections.Concurrent klassernavneområdet giver klasser til trådsikker drift. Nu vil flere tråde ikke skabe problemer for adgang til samlingselementerne. de tilgængelige klasser i dette er,

  • BlockingCollection
  • ConcurrentBag
  • ConcurrentStack
  • ConcurrentQueue
  • Samtidig ordbog
  • Skillevægge
  • Skillevægge
  • OrderablePartitioner

Liste

Det liste betragtes som en datastruktur, der er tilgængelig i System.Collection.Generics navneområde. Det kan gemme og hente elementer. Listen er i stand til at gemme duplikatelementer.

Eksempel:

ved hjælp af System ved hjælp af 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') navne. Tilføj ('Kiran') foreach (var navn i navne) {Console.WriteLine (navn)}}}

//Produktion:

Sandhya
Arun
Prashanth
Kiran

Hash sæt

C # HashSetkategori er ofte vantbutik,tag vækellerlæse komponenter. Detgør det ikkegem duplikatkomponenter.det opfordresat bruge HashSet kategorihvisdu har fåetat lagreudelukkende særpræg komponenter . det er findes i System.Collections.Generic namespace.

Eksempel:

ved hjælp af System ved hjælp af 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') navne. Tilføj ('Imran') navne. Tilføj ('karan') foreach (var navn i navne) {Console.WriteLine (navn)}}}

//Produktion:

Sunil
Amar
Pujari
Imran
karan

Sorteret sæt

C # SortedSetklasse er ofte vant tilbutik, fjerne eller Læs elementer . Det opretholder stigende rækkefølge oggør det ikkegem duplikatelementer.det er hurtigtat bruge SortedSetkategorihvisdu har fåetat lagre særpræg komponenter og opretholde stigende orden.det erfindes i System.Collections.Generic namespace.

Eksempel:

ved hjælp af System ved hjælp af 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') navne. Tilføj ('Ravi') navne. Tilføj ('Kajol') foreach (var navn i navne) {Console.WriteLine (navn)}}}

//Produktion:

Anuradha
Kajol
Praveen
Ravi
Sanjay

Stak

Det stak er en simpel samling, der følger KANT eller først i sidste udgangsprocedure under behandling af elementerne, der er gemt i den.

Eksempel:

ved hjælp af System ved hjælp af 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') navne.Push ('Rajesh') navne.Push ('kumar') foreach (strengnavn i navne) {Console.WriteLine (name)} Console.WriteLine ('Peek element:' + names.Peek () ) Console.WriteLine ('Pop:' + names.Pop ()) Console.WriteLine ('After Pop, Peek element:' + names.Peek ())}}

//Produktion:

kumar
Rajesh
James
Pooja
Chandan
Kig-element: kumar
Pop: kumar
Efter Pop, Peek-element: Rajesh

Køen ligner helt Stack, men den eneste forskel er, at køen følger FIFO eller først ind og først ud-princippet under behandling af elementerne, der er gemt i det.

Eksempel:

ved hjælp af System ved hjælp af System.Collections.Generic public class Edureka {public static void Main (string [] args) {Queues names = new Queue () names.Enqueue ('Srujan') names.Enqueue ('Prajat') names.Enqueue ( 'John') navne.Enqueue ('Raju') navne.Enqueue ('Hari') foreach (strengnavn i navne) {Console.WriteLine (name)} Console.WriteLine ('Peek element:' + names.Peek () ) Console.WriteLine ('Dequeue:' + names.Dequeue ()) Console.WriteLine ('After Dequeue, Peek element:' + names.Peek ())}}

//Produktion:

Srujan
Prajat
John
Voldsom
Dag
Kig-element: Srujan
Dequeue: Srujan
Efter Dequeue, Peek-element: Prajat

Tilknyttet liste

Den linkede liste er en dynamisk hukommelsessamling. Elementerne på den sammenkædede liste gemmes ved at få adgang til hukommelsen fra bunken og gemme elementerne i en kontinuerlig rækkefølge ved at linke deres adresser.

Eksempel:

ved hjælp af System ved hjælp af 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') navne.AddLast ('jay') navne.AddFirst ('sai') foreach (var navn i navne) {Console.WriteLine (navn)}}}

//Produktion:

sai
Grænser
Arun
Prakash
Jay

Ordbog

Ordbog kategoribrugerideaf hashtable. Det gemmer værdier påforudsætningenaf nøglen. Det indeholdersærprægnøglerudelukkende. Vedhjælpaf nøgle,det vil vi ganske enkeltsøg ellertage elementer væk.det erfindes i System.Collections.Generic namespace.

Eksempel:

ved hjælp af System ved hjælp af System.Collections.Generic public class Edureka {public static void Main (string [] args) {Dictionary names = new Dictionary () names.Add ('1', 'Shiva') names.Add ('2', 'Prasad') navne. Tilføj ('3', 'Preetam') navne. Tilføj ('4', 'Roy') navne. Tilføj ('5', 'Akash') foreach (KeyValuePair kv i navne) {Konsol. WriteLine (kv.Key + '' + kv.Value)}}}

//Produktion:

1 Shiva
2 Prasad
3 Preetam
4 Roy
5Akash

Sorteret ordbog

Det SortedDiction kategoribrugerdesignaf hashtable. Det gemmer værdier påideenaf nøglen. Det indeholdersærprægnøgler og opretholder stigende rækkefølge denideenaf nøglen. Vedhjælpaf nøgle,det vil vi ganske enkeltsøg ellertage elementer væk.det erfindes i System.Collections.Generic namespace.

Eksempel:

ved hjælp af System ved hjælp af System.Collections.Generic public class Edureka {public static void Main (string [] args) {SortedDictionary names = new SortedDictionary () names.Add ('1', 'Arun') names.Add ('4', 'Vishal') navne.Tilføj ('5', 'Ramesh') navne. Tilføj ('3', 'Vidya') navne. Tilføj ('2', 'Pallavi') foreach (KeyValuePair kv i navne) {Konsol. WriteLine (kv.Key + '' + kv.Value)}}}

//Produktion:

1 Shiva
2 Prasad
3 Preetam
4 Roy
5Akash

Sorteret liste

Det SortedList erenmatrix af nøgle / værdipar. Det gemmer værdier påforudsætningenaf nøglen. SortedListkategoriindeholdersærprægnøgler og opretholder stigende rækkefølge denforudsætningenaf nøglen. Vedhjælpaf nøgle,vi er i stand til simpelthensøg eller fjernelementer.det erfundet i System.Collections.Generic navneområde.

hvad er en forekomst af en klasse i java

Eksempel:

ved hjælp af System ved hjælp af System.Collections.Generic public class Edureka {public static void Main (string [] args) {SortedDictionary names = new SortedDictionary () names.Add ('1', 'Arun') names.Add ('4', 'Vishal') navne.Tilføj ('5', 'Ramesh') navne. Tilføj ('3', 'Vidya') navne. Tilføj ('2', 'Pallavi') foreach (KeyValuePair kv i navne) {Konsol. WriteLine (kv.Key + '' + kv.Value)}}}

//Produktion:

1 Arun
2 Pallavi
3 Vidya
4 Vishal
5Ramesh

Struktur

Strukturen er en brugerdefineret datatype designet til at gemme flere elementer i den forskellige datatype. Strukturen erklæres ved hjælp af nøgleordet struct.

Eksempel:

ved hjælp af System struct Books {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 ++ Programmering Tutorial 'Book1.book_id = 95908978 Book2.title =' Telecom Billing 'Book2.author =' Karan 'Book2.subject =' Telecom Billing Tutorial 'Book2.book_id = 18674900 Console.WriteLine ( 'Bog 1-titel: {0}', Book1.title) Console.WriteLine ('Book 1 Author: {0}', Book1.author) Console.WriteLine ('Book 1 subject: {0}', Book1.subject) Console.WriteLine ('Book 1 book_id: {0}', Book1.book_id) Console.WriteLine ('Book 2 title: {0}', Book2.title) Console.WriteLine ('Book 2 Author: {0}', Book2.author) Console.WriteLine ('Book 2 subject: {0}', Book2.subject) Console.WriteLine ('Book 2 book_id: {0}', Book2.book_id) Console.ReadKey ()}}

//Produktion:

Bog 1 titel: C # Programmering
Bog 1 Forfatter: Ramchandra Kumar
Bog 1 emne: C ++ programmering tutorial
Bog 1 bog_id: 95908978
Bog 2 titel: Telecom Billing
Bog 2 Forfatter: Karan
Bog 2 emne: Telecom Billing Tutorial
Bog 2 bog-id: 18674900

Funktioner

Funktionen er defineret som en blok af kode for hovedkoden. Funktionen bruges til at udføre udsagn, der er specificeret i kodeblokken. En funktion består af følgende komponenter.

  • Funktionsnavn: Det er et særpræg, der bruges til at foretage et funktionsopkald.
  • Returtype: Det specificerer datatypen for funktionsreturværdi.
  • Legeme: Den indeholder eksekverbare udsagn.
  • Adgangsspecifikator: Det specificerer funktionstilgængelighed i applikationen.
  • Parametre: Det er en liste over argumenter, som vi kan overføre til funktionen under opkaldet.

Syntaks

Funktionsnavn () {// funktionstekst // returneringserklæring}

Eksempel:

ved hjælp af systemnavne Funktioneksempel {klasse Edureka {offentlig streng Vis (strengmeddelelse) {Console.WriteLine ('Inside Show Function') returmeddelelse} statisk ugyldig Hoved (streng [] args) {Edureka-program = nyt Edureka () strengmeddelelse = program .Show ('To Edureka') Console.WriteLine ('Welcome' + message)}}

//Produktion:

Inside Show-funktion
Velkommen til Edureka

Funktioner kan udføres på 3 forskellige måder:

  • Ring efter værdi
  • Ring ved henvisning
  • Out Parameter

Ring efter værdi

I C #, værdi -type parametreerdet passen replikaaf oprindelig værdi tilfunktion i stedet forreference. Detgør det ikkemodificereden første værdi. Anændring opretteti beståetværdi ikkeAlderden særlige værdi.indenforfølgende eksempel,vi har fåetpassereværdi igennemdetopkald.

Eksempel:

ved hjælp af systemnavneområde CallByValue {class Edureka {public void Show (int val) {val * = val Console.WriteLine ('The value inside the show function' + val)} static void Main (string [] args) {int val = 50 Edureka-program = nyt Edureka () Console.WriteLine ('Værdi før kald til funktionen' + val) program. Vis (val) Console.WriteLine ('Værdi efter kald til funktionen' + val)}}

//Produktion:

Værdi, inden funktionen kaldes 50
Værdien inde i showfunktionen 2500
Værdi efter opkald til funktionen 50

Ring ved henvisning

I Call by Reference-metoden,til ref nøgleord for at videregive argumentet som referencetype. Den sender referencen til argumenter til funktionen snarere end en kopi af den oprindelige værdi. Ændringerne i beståede værdier er permanente og modificere den oprindelige variabelværdi.

Eksempel:

ved hjælp af systemnavneområde CallByReference {class Edureka {public void Show (ref int val) {val * = val Console.WriteLine ('The value inside the show function' + val)} static void Main (string [] args) {int val = 50 Edureka-program = nyt Edureka () Console.WriteLine ('Værdi inden kald til funktionen' + val) program. Vis (ref val) Console.WriteLine ('Værdi efter kald til funktionen' + val)}}

//Produktion:

Værdi, inden funktionen kaldes 50
Værdien inde i showfunktionen 2500
Værdi efter opkald til funktionen 2500

Out Parameter

Ud-parameterengiver ud nøgleord for at videregive argumenter som out-type. Det er som referencetype, bortset fra at det ikke kræver, at variablen initialiseres, før den passeres. Vi skal bruge ud nøgleord for at videregive argumentet som out-type. Det er nyttigt, når vi ønsker, at en funktion skal returnere flere værdier.

Eksempel:

ved hjælp af systemnavneområde 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ærdi før udlevering af variabel' + val) program. Vis (ud val) Console.WriteLine ('Værdi efter modtagelse af ud variabel' + val)}}}

//Produktion:

Værdi inden udlevering af variabel 50

Værdiefter modtagelse af ud-variablen 25

Lad os nu gå til objektorienteret programmering

Objektorienteret programmering

Objektorienteret programmering Systemer et programmeringsparadigme baseret på begrebet genstande der indeholder datamedlemmer og metoder relateret til dem. Det primære formål med objektorienteret programmering er at øge programmernes fleksibilitet og vedligeholdelse

Funktioner ved objektorienteret programmering:

  • Det lægger mere vægt på data snarere end på procedure.
  • Programmerne er opdelt i objekter, hvilket gør det let at arbejde med.
  • Datastrukturer er designet på en sådan måde, at de karakteriserer objekterne.
  • Funktioner, der fungerer dataene for et objekt placeres sammen i datastrukturen.
  • Data er skjult og kan ikke tilgås af eksterne funktioner uden tilladelse.
  • Kommunikation mellem objekter kan finde sted ved hjælp af funktioner.
  • Tilføjelse af nye data og funktioner er blevet let.
  • Følger bottom-up tilgangen i programdesign.

De objektorienterede paradigmer i C # er som følger

Tælling i C #

Enum eller også kaldet som en optælling i C # bruges til at gemme konstante værdier uden at skulle ændre dem under hele udførelsen af ​​et C # -program. Detbruges til at gemme et sæt navngivne konstanter såsom sæson, dage, måned, størrelse osv

Eksempel:

ved hjælp af System offentlig klasse Enum Eksempel {offentlig enum uge {mandag, tirsdag, onsdag, torsdag, fredag, lørdag, søndag} offentlig statisk ugyldig Main () {int x = (int) uge. mandag int y = (int) uge. fredag ​​konsol .WriteLine ('Monday = {0}', x) Console.WriteLine ('Friday = {0}', y)}}

//Produktion:

Mandag = 0
Fredag ​​= 4

Objektorienteret programmeringsmetode

Den objektorienterede programmeringsstil kan opnås ved at følge nedenstående metoder.

Indkapsling

Indkapsling er en metode til at kombinere metoder sammen med deres datamedlemmer.

Eksempel:

ved hjælp af systemnavne Edureka {klasse Rektangel {offentlig dobbelt længde offentlig dobbelt bredde offentlig dobbelt GetArea () {returlængde * bredde} offentlig tom skærm () {Console.WriteLine ('Længde: {0}', længde) Console.WriteLine (' Bredde: {0} ', bredde) Console.WriteLine (' Area: {0} ', GetArea ())}} klasse ExecuteRectangle {statisk ugyldigt Main (string [] args) {Rectangle r = new Rectangle () r.length = 50 r.bredde = 35 r.Display () Console.ReadLine ()}}}

//Produktion:

Længde: 50
Bredde: 35
Område: 1750

Abstraktion

Abstraktion er en metode til skjule den komplekse kodningsdel fra brugeren ved kun at give ham de nødvendige oplysninger, han har brug for.

Eksempel:

ved hjælp af system offentlig abstrakt klasse figur {offentlig abstrakt ugyldig tegning ()} offentlig klasse rektangel: figur {offentlig tilsidesættelse ugyldig tegning () {Console.WriteLine ('tegning rektangel ...')}} offentlig klasse Cirkel: figur {offentlig tilsidesættelse ugyldig draw () {Console.WriteLine ('drawing circle ...')}} public class TestAbstract {public static void Main () {Shape ss = new Rectangle () s.draw () s = new Circle () s.draw ()}}

//Produktion:

tegning rektangel ...
tegne cirkel ...

Interface

Det interface ligner fuldstændigt Abstraktion. En grænseflades funktionalitet er at skjule de vigtige data fra brugeren og give ham de eneste vigtige data, han har brug for.

Eksempel:

ved hjælp af systemets offentlige grænseflade Tegning {void draw ()} public class Rectangle: Drawable {public void draw () {Console.WriteLine ('drawing rectangle ...')}} public class Circle: Drawable {public void draw () {Console .WriteLine ('tegning cirkel ...')}} offentlig klasse TestInterface {offentlig statisk ugyldig Main () {Drawable dd = new Rectangle () d.draw () d = new Circle () d.draw ()}}

//Produktion:

tegning rektangel ...
tegne cirkel ...

Polymorfisme

Polymorfismeer kombinationen af “Poly” + “Morphs” hvilket betyder mange former. Det er et græsk ord. Det betyder, at kodesegmentet kan tage flere former. Vi har to typer polymorfisme.

  • Kompilér tidspolymorfisme
  • Kør tidspolymorfisme

Eksempel:

ved hjælp af system offentlig klasse 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.farve)}}

//Produktion:

hvid

Arv

Arv er en proces, hvor et objekt automatisk erhverver alle egenskaber og adfærd for dets overordnede objekt. Du kan genbruge, udvide eller ændre de attributter og adfærd, der er defineret i anden klasse. den klasse, der arver medlemmerne af en anden klasse, kaldes afledt klasse og den klasse, hvis medlemmer arves, kaldes grundlag klasse. Den afledte klasse er den specialiserede klasse for basisklassen.

Eksempel på arv på et niveau

ved hjælp af systemnavneområde RectangleApplication {class Rectangle {beskyttet dobbelt længde beskyttet dobbelt bredde offentlig Rektangel (dobbelt l, dobbelt w) {længde = l bredde = w} offentlig dobbelt GetArea () {returlængde * bredde} offentlig tom skærm () {Konsol. WriteLine ('Length: {0}', length) Console.WriteLine ('Width: {0}', width) Console.WriteLine ('Area: {0}', GetArea ())}} class Tableop: Rectangle {private dobbelt omkostning offentlig Bordplade (dobbelt l, dobbelt w): base (l, w) {} offentlig dobbelt GetCost () {dobbelt omkostning = GetArea () * 70 returomkostninger} offentlig ugyldig skærm () {base.Display () konsol .WriteLine ('Cost: {0}', GetCost ())}} class ExecuteRectangle {static void Main (string [] args) {Tabletop t = new Tabletop (4.5, 7.5) t.Display () Console.ReadLine () }}}

//Produktion:

Længde: 4.5
Bredde: 7,5
Område: 33,75
Omkostninger: 2362,5

Eksempel på arvelighed på flere niveauer

ved hjælp af systemnavneområde 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)} klasse Rektangel: Shape, PaintCost {public int getArea () {return (width * height)} public int getCost (int area) {return area * 70}} class RectangleTester {static void Main (string [] args) {Rectangle Rect = nyt rektangel () int-område Rect.setWidth (5) Rect.setHeight (7) area = Rect.getArea () Console.WriteLine ('Total area: {0}', Rect.getArea ()) Console.WriteLine ('Total malingsomkostninger: $ {0} ', Rect.getCost (område)) Console.ReadKey ()}}}

//Produktion:

Samlet areal: 35
Samlede malingsomkostninger: $ 2450

Overbelastning

Overbelastning er en situation, hvor vi har to eller medlemmer, der er erklæret ved hjælp af samme navn. Overbelastning er også mulig, når vi også erklærer to eller flere metoder med samme navn. Lad os kontrollere eksempler på begge dele.

Medlem overbelastning

Eksempel:

ved hjælp af System public class 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 { offentlig statisk ugyldig Main () {Console.WriteLine (Edureka.add (12, 23)) Console.WriteLine (Edureka.add (12, 23, 25))}}

//Produktion:

35
60

Metode Overbelastning

Eksempel:

ved hjælp af System public class 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))}}

//Produktion:

35
33.699997

Tilsidesættelse

Overstyring er en situation, hvor børneklasse også definerer den samme metode, som forældrene definerer. Lad os forstå dette gennem et lille eksempel.

Eksempel:

ved hjælp af System public class Edureka {public virtual void eat () {Console.WriteLine ('Eating')}} public class Dog: Edureka {public override void eat () {Console.WriteLine ('Eating food')}} public class Overriding {public static void Main () {Dog d = new Dog () d.eat ()}}

//Produktion:

Spiser mad

Navneområde

Det navneområde bruges dybest set til at håndtere flere klasser, der er til stede i programmet. Navneområdet er tilgængeligt på forskellige måder.

  • System.Konsol: Her, den System bliver navneområdet
  • For at få adgang til klassen i et navneområde skal vi bruge namespacename.classname.
  • Vi kan bruge ved brug af nøgleord også.

Eksempel:

ved hjælp af System ved hjælp af First ved hjælp af Second namespace First {public class Edureka {public void sayWelcome () {Console.WriteLine ('Welcome To Edureka')}}} namespace Second {public class Happy_Learning {public void sayWishes () {Console.WriteLine (' Happy Learning ')}}} offentlig klasse Navneområde {public static void Main () {Edureka h1 = new Edureka () Happy_Learning w1 = new Happy_Learning () h1.sayWelcome () w1.sayWishes ()}}

//Produktion:

Velkommen til Edureka
Glad læring

Filoperationer

Det filhandlinger tilgængelige i C # er som følger:

Operation Beskrivelse
BinaryReader Læser primitive data fra en binær strøm.
BinaryWriter Skriver primitive data i binært format.
BufferedStream Midlertidig lagerplads til en strøm af bytes.
Vejviser Hjælper med at manipulere en bibliotekstruktur.
DirectoryInfo Bruges til at udføre operationer i telefonbøger.
DriveInfo Giver information til drevene.
Fil Hjælper med at manipulere filer.
FileInfo Bruges til at udføre handlinger på filer.
FileStream Bruges til at læse fra og skrive til et hvilket som helst sted i en fil.
MemoryStream Bruges til tilfældig adgang til streamede data, der er gemt i hukommelsen.
Sti Udfører handlinger på stiinformation.
StreamReader Bruges til læsning af tegn fra en byte-stream.
StreamWriter Bruges til at skrive tegn til en stream.
StringReader Bruges til læsning fra en strengbuffer.
StringWriter Bruges til at skrive i en strengbuffer.

FileMode

Det FileMode er en tæller, der definerer flere filåbningsmetoder. Medlemmerne af FileMode Enumerator beskrives som følger:

  • Tilføj: Det åbner en eksisterende fil og placerer markøren i slutningen af ​​filen eller opretter filen, hvis filen ikke findes.
  • Skab: Det er designet til at oprette en ny fil.
  • Lav ny: Det er designet til at specificere til operativsystemet, at det skal oprette en ny fil.
  • Åben: Det er designet til at åbne en eksisterende fil.
  • OpenOrCreate: Det er designet til at specificere operativsystemet, at det skal åbne en fil, hvis det findes, ellers skal det oprette en ny fil.
  • Afkort: Trunker åbner en eksisterende fil og trunkerer dens størrelse til nul bytes.

FileAccess

FileAccess Enumerator bruges til at få adgang til en bestemt fil. Det har følgende medlemmer.

  • Læs
  • Skrive
  • Læse skrive

FileShare

Det Filshare Enumerator bruges til at dele en bestemt fil. Det har følgende medlemmer.

  • Arvelig: Arvelig gør det muligt for en filhåndtering at overføre en arv til barnets processer.
  • Ingen: Ingen afviser deling af den aktuelle fil
  • Læs: Læs gør det muligt at åbne filen til læsning.
  • Læse skrive: ReadWrite gør det muligt at åbne filen til læsning og skrivning.
  • Skrive: Skriv gør det muligt at åbne filen til skrivning.

Begivenheder

En begivenhed er generelt kendt som en handling, der genereres af brugeren. Det kan være et museklik og endda et enkelt tastetryk fra tastaturet. Tilsvarende har C # -programmer også begivenheder. Arrangøren af ​​begivenheden kaldes forlægger og modtageren af ​​begivenheden kaldes abonnent.

Forlægger

TIL forlægger indeholder definitionen af ​​begivenheden og delegaten. Det begivenhedsdelegeret tilknytning er defineret i dette objekt. EN forlægger klasseobjekt påberåber sig begivenheden, og den meddeles til andre objekter.

Abonnent

TIL abonnent accepterer begivenheden og giver en begivenhedshåndterer. Det delegeret i forlagsklassen påberåber sig metoden / begivenheden handler af abonnentklassen.

Eksempel:

ved hjælp af systemnavneområde Edureka {public delegate string Del (string str) class EventBlock {event Del NewEvent public EventBlock () {this.NewEvent + = new Del (this.WelcomeUser)} public string WelcomeUser (string username) {return 'Welcome to Edureka . '+ brugernavn} statisk ugyldigt Main (string [] args) {EventBlock obj1 = new EventBlock () string result = obj1.NewEvent (' Happy Learning ') Console.WriteLine (result)}}}

//Produktion:

Velkommen til Edureka. Glad læring

Generiske

Generiske er et koncept om at give medlemmerne og metoderne til en klasse pladsholdere i Kørselstid. Vi kan definere Generics ved hjælp af beslag. Lad os tjekke følgende eksempler.

Generik i en klasse

ved hjælp af systemnavne Edureka {class GenericClass {public GenericClass (T msg) {Console.WriteLine (msg)}} class Program {static void Main (string [] args) {GenericClass gen = new GenericClass ('Denne meddelelse er fra generisk klasse' ) GenericClass genI = ny GenericClass (123) GenericClass getCh = ny GenericClass ('E')}}

//Produktion:

Denne besked er fra generisk klasse
123
ER

Generiske stoffer i en metode

ved hjælp af systemnavneområde Edureka {class GenericClass {public void Show (T msg) {Console.WriteLine (msg)}} class Program {static void Main (string [] args) {GenericClass genC = new GenericClass () genC.Show ('This besked er fra den generiske metode ') genC.Show (321) genC.Show (' H ')}}}

//Produktion:

Denne meddelelse er fra den generiske metode
321
H

Delegater

Det Delegeret fungerer som en reference til metoden. Dybest set er det det samme som en funktionsmarkør i C og C ++ men langt bedre og typesikker. Delegaten i statisk metode indkapsler kun metoden. Mens delegaten i eksempel metode indkapsler både metode og forekomst. Den bedste brug af delegeret er at bruge som en begivenhed.

Eksempel:

ved hjælp af systemdelegeret int Lommeregner (int n) offentlig klasse Edureka {statisk int antal = 25 offentlig statisk int tilføj (int n) {nummer = antal + n retur nummer} offentlig statisk int mul (int n) {nummer = antal * n retur nummer} offentlig statisk int getNumber () {returnummer} offentlig statisk tomrum Hoved (streng [] args) {Lommeregner c1 = ny lommeregner (tilføj) Lommeregner c2 = ny lommeregner (mul) c1 (20) Console.WriteLine ('Efter lommeregner en delegeret, det nye nummer er: '+ getNumber ()) c2 (3) Console.WriteLine (' Efter lommeregner to delegater er det nye nummer: '+ getNumber ())}}

//Produktion:

Efter lommeregner en delegat er det nye nummer: 45
Efter lommeregner to delegerede er det nye nummer: 135

Afspejling

Refleksionen kræves for at få metadataene i løbetid. Henvisningen findes i System Refleksion navneområde. Det kræver følgende klasser at udføre.

  • Type
  • MemberInfo
  • ConstructorInfo
  • MethodInfo
  • FieldInfo
  • PropertyInfo
  • TypeInfo
  • EventInfo
  • Modul
  • montage
  • Samlingsnavn
  • Markør

Type klasse

C # Type klasse repræsenterer typedeklarationer for klassetyper, interface typer, optællingstyper, array typer, værdityper

Skriv egenskaber

En liste over vigtige egenskaber for typeklasser er nævnt nedenfor.

Ejendom Beskrivelse
montage Får forsamlingen til denne type.
AssemblyQualifiedName Får forsamlingens kvalificerede navn til denne type.
Egenskaber Henter de attributter, der er knyttet til typen.
BaseType Får basen eller overordnet type.
Fulde navn Får det fuldt kvalificerede navn på typen.
Er abstrakt bruges til at kontrollere, om typen er abstrakt.
IsArray bruges til at kontrollere, om typen er Array.
IsClass bruges til at kontrollere, om typen er klasse.
IsEnum bruges til at kontrollere, om typen er Enum.
IsInterface bruges til at kontrollere, om typen er Interface.
Er indlejret bruges til at kontrollere, om typen er indlejret.
Er primær bruges til at kontrollere, om typen er primitiv.
IsPointer bruges til at kontrollere, om typen er Pointer.
Er ikke offentlig bruges til at kontrollere, om typen ikke er offentlig.
IsOffentlig bruges til at kontrollere, om typen er offentlig.
Er forseglet bruges til at kontrollere, om typen er forseglet.
Kan Serialiseres bruges til at kontrollere, om typen kan Serialiseres.
MemberType bruges til at kontrollere, om typen er medlemstype af indlejret type.
Modul Får modulet af typen.
Navn Får navnet på typen.
Navneområde Får navnens område for typen.
Ejendom Beskrivelse
GetConstructors () Returnerer alle de offentlige konstruktører til typen.
GetConstructors (BindingFlags) Returnerer alle konstruktører til typen med specificerede bindingsflag.
GetFields () Returnerer alle de offentlige felter for typen.
GetFields (BindingFlags) Returnerer alle de offentlige konstruktører til typen med specificeret BindingFlags.
GetMembers () Returnerer alle de offentlige medlemmer for typen.
GetMembers (BindingFlags) Returnerer alle medlemmer for typen med specificerede BindingFlags.
GetMethods () Returnerer alle de offentlige metoder til typen.
GetMethods (BindingFlags) Returnerer alle metoderne til typen med specificerede BindingFlags.
GetProperties () Returnerer alle de offentlige egenskaber for typen.
GetProperties (BindingFlags) Returnerer alle egenskaber for typen med specificerede BindingFlags.
GetType () Får den aktuelle type.
GetType (streng) Henter typen for det givne navn.

Refleksionseksempler:

Få Type

Eksempel:

ved hjælp af System offentlig klasse GetType {public static void Main () {int a = 10 Type type = a.GetType () Console.WriteLine (type)}}

//Produktion:

System.Int32

Få samling

Eksempel:

ved hjælp af System ved hjælp af System.Reflection offentlig klasse GetAssembly {public static void Main () {Type t = typeof (System.String) Console.WriteLine (t.Assembly)}}

//Produktion:

System.Private.CoreLib, version = 4.0.0.0, kultur = neutral, PublicKeyToken = 7cec85d7bea7798e

Information om udskrivningstype

Eksempel:

bruger System ved hjælp af 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)}}

//Produktion:

Sand
Falsk
Falsk

Udskriv konstruktører

Eksempel:

ved hjælp af System ved hjælp af System.Reflection offentlig klasse PrintConstructors {public static void Main () {Type t = typeof (System.String) Console.WriteLine ('Constructors of {0} type ...', t) ConstructorInfo [] ci = t .GetConstructors (BindingFlags.Public | BindingFlags.Instance) foreach (ConstructorInfo c i ci) {Console.WriteLine (c)}}}

//Produktion:

Konstruktører af systemstrengetype ...
Ugyldig .ctor (Char [])
Ugyldig .ctor (Char [], Int32, Int32)
Void .ctor (Char *)
Void .ctor (Char *, Int32, Int32)
Void .ctor (SByte *)
Void .ctor (SByte *, Int32, Int32)
Void .ctor (SByte *, Int32, Int32, System.Text.Encoding)
Void .ctor (Char, Int32)
Void .ctor (System.ReadOnlySpan`1 [System.Char])

Udskrivningsmetoder

Eksempel:

ved hjælp af System ved hjælp af System.Reflection offentlig klasse PrintMethods {public static void Main () {Type t = typeof (System.String) Console.WriteLine ('Methods of {0} type ...', t) MethodInfo [] ci = t .GetMethods (BindingFlags.Public | BindingFlags.Instance) foreach (MethodInfo m in ci) {Console.WriteLine (m)}}}

//Produktion:

Metoder til systemstrengetype ...
System.String Erstat (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) ......

Udskriv felter

Eksempel:

ved hjælp af System ved hjælp af System.Reflection offentlig klasse PrintFields {public static void Main () {Type t = typeof (System.String) Console.WriteLine ('Fields of {0} type ...', t) FieldInfo [] ci = t .GetFields (BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic) foreach (FieldInfo f in ci) {Console.WriteLine (f)}}}

//Produktion:

Felter i System.Strengetype ...
System.Streng tom

Lad os nu gå videre til nogle avancerede C # programmeringskoncepter

Avancerede C # -koncepter

Anonym funktion

Funktionen, der mangler et bestemt navn, kaldes Anonym Funktioner. Der findes to typer anonyme funktioner i C #

  • Lambda-udtryk
  • Anonyme metoder

Eksempel:

ved hjælp af systemnavneområde 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)}}}

//Produktion:

Firkant: 625

Anonyme metoder

Det anonym metode giver den samme funktionalitet som en lambda-udtryk, bortset fra at det giver os mulighed for at ignorere parameterlisten.

Eksempel:

ved hjælp af systemnavneområde AnonymousMethods {class Program {public delegate void AnonymousFun () static void Main (string [] args) {AnonymousFun fun = delegate () {Console.WriteLine ('This is anonymous function')} fun ()}}}

//Produktion:

Dette er anonym funktion

Multitrådning

Multithreading er en proces, hvor flere tråde oprettes og tildeles til forskellige opgaver. dette sparer tid ved at udføre flere job ad gangen. Multithreading-klassen er tilgængelig i System.Trådning navneområde.

System.Trådning af navneområdet

Det System.Trådning namespace indeholder klasser og grænseflader for at lette multithreading. Det giver klasser til at synkronisere trådressourcen. En liste over almindeligt anvendte klasser er angivet nedenfor:

  • Tråd
  • Mutex
  • Timer
  • Overvåge
  • Semafor
  • Trådlokal
  • TrådPool
  • Flygtige

Process og tråd

Processen er faktisk og Ansøgning og det betragtes som en tungvægt komponent. På den anden side er tråden en enkelt modul af hele ansøgningen. det er letvægt sammenlignet med processen

Trådens livscyklus

Hver tråd har en livscyklus. Trådens livscyklus er defineret i System.Threading.Thread klasse. Følgende er stadierne i livscyklussen for enhver tråd.

  • Ikke startet
  • Kan køres (Klar til at køre)
  • Løb
  • Kan ikke køres
  • Død

Trådklassen giver følgende egenskaber og metoder som følger.

Trådegenskaber

Ejendom Beskrivelse
Nuværende tråd returnerer forekomsten af ​​den aktuelt kørende tråd.
Er i live kontrollerer, om den aktuelle tråd er i live eller ej.
IsBaggrund At få / indstille værdien af ​​den aktuelle tråd er i baggrunden eller ej.
ManagedThreadId bruges til at få det unikke id til den aktuelt administrerede tråd.
Navn bruges til at hente eller indstille navnet på den aktuelle tråd.
Prioritet bruges til at hente eller indstille prioriteten for den aktuelle tråd.
ThreadState bruges til at returnere en værdi, der repræsenterer trådtilstanden.

Trådmetoder

Metode Beskrivelse
Abort() bruges til at afslutte tråden. Det hæver ThreadAbortException.
Afbryde() bruges til at afbryde en tråd, der er i WaitSleepJoin-tilstand.
Tilslutte() bruges til at blokere alle opkaldstråde, indtil denne tråd afsluttes.
ResetAbort () bruges til at annullere anmodningen om afbrydelse af den aktuelle tråd.
Genoptag() bruges til at genoptage den ophængte tråd. Det er forældet.
Sleep (Int32) bruges til at suspendere den aktuelle tråd i de angivne millisekunder.
Start() ændrer trådens aktuelle tilstand til Runnable.
Suspendere() suspenderer den aktuelle tråd, hvis den ikke er suspenderet. Det er forældet.
Udbytte() bruges til at give udførelsen af ​​den aktuelle tråd til en anden tråd.

Hovedtrådeksempel

ved hjælp af System ved hjælp af System.Threading offentlig klasse Edureka {public static void Main (string [] args) {Thread t = Thread.CurrentThread t.Name = 'MainThread' Console.WriteLine (t.Name)}}

//Produktion:

Hovedtråd

Undtagelse Håndtering

Det undtagelse er en fejl, der kastes af programmet i løbetid. Vi udfører Exception-Handling for at gøre vores program undtagelsesfri.

Undtagelse Beskrivelse
System.DivideByZeroException Fejl genereret ved at dividere et tal med nul.
System.NullReferenceException håndterer den fejl, der genereres ved at henvise til null-objektet.
System.InvalidCastException håndterer fejlen genereret af ugyldig typecasting.
System.IO.IOUndtagelse håndterer input / output-fejlene.
System.FieldAccessException Fejl genereret af ugyldig privat / beskyttet adgang.

I C # bruger vi 4 nøgleord til at udføre undtagelseshåndtering:

  • prøve
  • fangst
  • endelig, og
  • kaste
Eksempel:
ved hjælp af System public class EdurekExample {public static void Main (string [] args) {try {int a = 10 int b = 0 int x = a / b} catch (Exception e) {Console.WriteLine (e)} Console.WriteLine ('Denne meddelelse er fra fangstblok')}}

//Produktion:

System.DivideByZeroException: Forsøgte at dele med nul.
på ExExaEdurekample.Main (String [] args) i F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: line 10
Denne besked er fra fangstblok

Tilpasset undtagelseseksempel

ved hjælp af System offentlig klasse InvalidAgeException: Undtagelse {public InvalidAgeException (strengmeddelelse): base (besked) {}} offentlig klasse Tilpasset {statisk ugyldig validering (int age) {if (alder<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.') } } 

//Produktion:

InvalidAgeException: Undskyld, alder forventes at være større end 18
på Customised.validate (Int32 age) i F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: line 18
på Customised.Main (String [] args) i F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: line 23
Fangstblok udføres nu.

Endelig blokeksempel

ved hjælp af System offentlig klasse FinalExecption {public static void Main (string [] args) {try {int a = 10 int b = 0 int x = a / b} catch (Undtagelse e) {Console.WriteLine (e)} endelig {Console .WriteLine ('Endelig blok udføres')} Console.WriteLine ('Catch block is executed')}}

//Produktion:

System.DivideByZeroException: Forsøgte at dele med nul.
ved FinalExecption.Main (String [] args) i F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: line 10
Endelig udføres blok
Fangstblok udføres

Undtagelse for systemundtagelse

[SerializableAttribute] [ComVisibleAttribute (true)] offentlig klasse SystemException: Undtagelse

Systemundtagelseskonstruktører

Bygger Beskrivelse
Systemundtagelse () Det bruges til at initialisere en ny forekomst af klassen SystemException.
Systemundtagelse

(SerializationInfo, StreamingContext)

Det bruges til at initialisere en ny forekomst af SystemException-klassen med serielle data.
Systemundtagelse (streng) Det bruges til at initialisere en ny forekomst af klassen SystemException med en specificeret fejlmeddelelse.
Systemundtagelse (streng, undtagelse) Det bruges til at initialisere en ny forekomst af klassen SystemException med en specificeret fejlmeddelelse og en henvisning til den indre undtagelse, der er årsagen til denne undtagelse.

Egenskaber for systemundtagelse

Ejendom Beskrivelse
Data Det bruges til at hente en samling nøgle / værdipar, der giver yderligere brugerdefinerede oplysninger om undtagelsen.
HelpLink Det bruges til at hente eller indstille et link til den hjælpefil, der er knyttet til denne undtagelse.
HResult Det bruges til at hente eller indstille HRESULT, en kodet numerisk værdi, der er tildelt en bestemt undtagelse.
Indre undtagelse Det bruges til at hente den undtagelsesinstans, der forårsagede den aktuelle undtagelse.
Besked Det bruges til at få en besked, der beskriver den aktuelle undtagelse.
Kilde Det bruges til at hente eller indstille navnet på det program, der forårsager fejlen.
StackTrace Det bruges til at få en strengrepræsentation af de umiddelbare rammer på opkaldstakken.
TargetSite Det bruges til at få den metode, der kaster den aktuelle undtagelse.

Systemundtagelsesmetoder

Metoder Beskrivelse
Lige (objekt) Det bruges til at kontrollere, at det angivne objekt er lig med det aktuelle objekt eller ej.
Afslut () Det bruges til at frigøre ressourcer og udføre oprydningsoperationer.
GetBaseException () Det bruges til at få rodundtagelse.
GetHashCode () Det bruges til at få hash-koden.
GetObjectData

(SerializationInfo, StreamingContext)

Det bruges til at hente objektdata.
GetType () Det bruges til at hente runtime-typen for den aktuelle forekomst.
MemberwiseClone () Det bruges til at oprette en lav kopi af det aktuelle objekt.
ToString () Det bruges til at oprette og returnere en strengrepræsentation af den aktuelle undtagelse.

Eksempel på systemundtagelse

ved hjælp af systemnavneområde CSharpProgram {class SystemExceptionExample {static void Main (string [] args) {try {int [] arr = new int [5] arr [10] = 25} catch (SystemException e) {Console.WriteLine (e)} }}}

//Produktion:

System.IndexOutOfRangeException: Indeks var uden for arrayets grænser.
ved CSharpProgram.SystemExceptionExample.Main (String [] args) i F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: line 11

Synkronisering

Synkronisering kan være en teknik, der kun giver 1 tråd adgang til ressourcen i et bestemt tidspunkt. Ingen alternativ tråd vil afbryde, før den udpegede tråd er færdig med sin opgave.

I multitrådeprogram er tråde tilladtfor at få adgang til enhver ressource tilspecificeret udførelsetid. Tråde deler ressourcer og udføres asynkront. Adgang til delte ressourcer (data)kan være en vigtig opgavedet genereltkunne standsesystemet.vi har en tendens til at påvirke detved at oprette tråde på en synkron måde.

Eksempel uden synkronisering

ved hjælp af System ved hjælp af System.Threading klasse 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() } } 

//Produktion:

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

Eksempel med synkronisering

ved hjælp af System ved hjælp af System.Threading klasse Edureka {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() } } 

//Produktion:

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

Nye funktioner

Microsoft har tilføjet mange nyeste funktioner til C # sprog, nogle af dem er nævnt nedenfor.

C # 6.0

  • Brug af statisk direktiv
  • Undtagelsesfiltre
  • Vent i fangst / endelig blokke
  • Initialisering af automatisk ejendom
  • Standardværdier for egenskaber, der kun er getter
  • Medlemmer med udtryksfølelse
  • Null propagator
  • Strenginterpolation
  • Navn på operatør
  • Ordbog initialisering
  • Compiler-as-a-service (Roslyn)

C # 7.0

  • Mønster matching
  • Tuples
  • Dekonstruktion
  • Lokale funktioner
  • Ciffer separator
  • Binære bogstaver
  • Ref vender tilbage og lokale
  • Ekspressionskropsbyggere og færdiggørere
  • Udtryk kropsholdere og settere
  • Out variabler
  • Generaliserede asynkroniseringsreturtyper

C # 7.1

  • Async hoved
  • Standardudtryk

Interviewspørgsmål baseret på C #

De vigtige interviews Spørgsmål baseret på C # programmeringssprog kan findes i denne opdaterede .

Med dette kommer vi til slutningen af ​​denne 'C # Tutorial' -artikel. Jeg håber, du har forstået vigtigheden af ​​datastrukturer, syntaks, funktionalitet og operationer, der udføres ved hjælp af dem. Nu hvor du har forstået det grundlæggende ved programmering i C # gennem detteC # Tutorial, tjek uddannelse af Edureka på mange teknologier som Java, Forår og mangemere fik en betroet online læringsvirksomhed med et netværk på mere end 250.000 tilfredse elever spredt over hele kloden en spørgsmål til os? Nævn det i kommentarfeltet på denne 'C # Tutorial' -blog, og vi vender tilbage til dig så hurtigt som muligt.