C # Opplæring: Grunnleggende du trenger for å mestre C #



Denne artikkelen om C # -opplæring vil hjelpe deg med detaljert kunnskap om C # -fundamentals sammen med sanntidseksempler for bedre forståelse.

C # er allsidig og det robuste programmeringsspråket utviklet av Microsoft Corporation i år 2000 som en dødelig konkurrent til Java. Det er mest populært og et dominerende programmeringsspråk når det gjelder både webutvikling og desktop applikasjonsutvikling.

I denne C # opplæringen vil vi lære følgende konsepter.





C # Grunnleggende

Introduksjon til C # programmeringsspråk

Tilbake på begynnelsen av 90-tallet var Java det ledende programmeringsspråket for webutvikling, desktop applikasjonsutvikling og mange andre felt. Microsoft ønsket å komme opp med en konkurrent med mange avanserte funksjoner som kan legge Java langt bak.



C#-Tutorial-hejlsberg_bio

Det var i år 2000, Anders Hejlsberg og hans Microsoft-team kom på ideen om C # populært kalt C-Sharp. Dette initiativet ble godkjent av International Standards Organization (MAJOR) og European Computer Manufacturers Association (ECMA). og til slutt kommer C # inn i verden av programvareutvikling.

Funksjoner i C # programmeringsspråk



  • Objektorientert programmeringsspråk

Objektorientert programmering er det som gjør C # skarpt til å være det mest programmerervennlige og enkelt å utvikle og vedlikeholde programmeringsspråk.

  • Typesikkert språk

Betydningen av Type-Safe er at kompilatoren kun får tilgang til minneplasseringen som har tillatelse til å utføre. Denne funksjonen forbedrer kodesikkerheten til et eksponensielt nivå.

  • Interoperabilitet

Funksjonen til interoperabilitet gjør C # i stand til å gjøre alt som er naturlig for C ++ på en mer effektiv måte som kan overgå C ++ selv.

hvordan du bruker goto c ++
  • Rikt bibliotek

C # gir tilgang til flere antall innebygde biblioteker som tilbyr forhåndsprogrammerte funksjoner for å redusere tiden brukt i utviklingsprosessen.

  • Skalerbar og oppdaterbar

C # ble designet for å være bedre enn de andre programmeringsspråkene. Derfor er den alltid åpen for oppdateringer, og den holder seg svært skalerbar med funksjonene.

  • Komponentorientert

Utviklerne hos Microsoft brukte den komponentbaserte tilnærmingen til å utvikle C #. Dette er den mest dominerende utviklingsmetoden for å holde C # meget skalerbar og oppdatert.

  • Strukturert språk

Den strukturerte programmeringsmetoden foretrekkes i løpet av programvarens utviklingslivssyklus, da det blir enkelt å utvikle kompilering og distribusjon av programvaren sammenlignet med den prosedyreorienterte programmeringsmetoden.

  • Fort

C # Programmering skjer for å være raskere i kompilering og utførelse sammenlignet med C ++ og andre programmeringsspråk.

Installasjon

Det er bevist at Microsoft Visual Studio er den beste i klassen Editor for C # Programming. Vi installerer og setter opp Microsoft Visual Studio for å utføre C # -programmene ved å følge trinnene nevnt nedenfor:

Trinn 1 : Last ned Microsoft Visual Studio

Google for siste versjon av Visual Studio og last ned installere filen til det lokale systemet og deretter løpe installasjonsfilen som en administrator.

Trinn 2: Velg .NET Desktop Development Package

Når du har kjørt installasjonsprogrammet, blir Visual Studio Editor lastet ned til ditt lokale system. Senere vil en dialogboks vises på skrivebordet ditt og spør fienden om bestemt pakke du trenger i systemet ditt. Her må du velge .NET Desktop Development pakke.

Trinn 3: Sett C # Miljø

Når pakkene dine for .NET utvikling blir lastet ned, vil en annen dialogboks vises på skjermen din og spørre om utviklingsmiljøet du leter etter. Her må du velg miljøet for C #.

Trinn 4: Lag ditt første prosjekt

Når miljøet er satt, er dere alle klare. Start Visual Studio og velg lage nytt prosjekt alternativet i den viste dialogboksen.

Du vil bli omdirigert til neste dialogboks, og der må du velge Klassebibliotek som .NET Standard som vist under.

I neste dialogboks blir du bedt om det Konfigurer prosjektet . Konfigurer den, og du er nå i redigeringsprogrammet. Skriv ditt første program og løpe den. Utgangen vil vises vellykket på Ledeteksten.

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

//Produksjon:

La oss gjennomføre vårt første C # -program.

C # Programstruktur

Nå som vi har utført vårt første C # -program, la oss forstå strukturen i detalj. Et enkelt C # -program har følgende deler.

ved hjelp av systemnavnområdet ConsoleApplication1 {public class Edureka {public static void Main (string [] args) {Console.WriteLine ('Welcome to Edureka !, Happy Learning ..!')}}}

//Produksjon:

Velkommen til Edureka !, Happy Learning ..!

  • klasse: klasse kan generelt defineres som en nøkkelord som brukes til å definere en klasse i C # -programmet.
  • Edureka: Det er navnet på Klasse. Klasse blir ofte sett på som en blåkopi som lagrer medlemmene og metodene knyttet til klassen.
  • Hoved: I utgangspunktet er det primær metode av hele C # -programmet, fungerer det som porten for kontrollen til å gå inn i programmet. Det blir utført før noen annen metode for programmet kjøres.
  • tomrom: Dette segmentet av koden er utpekt til returtype av metoden. Det kan være hvilken som helst datatype annet enn ugyldig. Void betyr at metoden ikke har noen data som returneres fra den.
  • statisk: Dette er en nøkkelord som sier at datamedlemmer som er erklært er statiske og at et dedikert minne er tildelt de erklærte medlemmene.
  • String [] argumenterer: Det ligner kommandolinjeargumentene som vi bruker i programmet vårt. Mens vi utfører programmet vårt, passerer vi i utgangspunktet noen argumenter, som vil bli akseptert av programmet på grunn av denne uttalelsen.
  • System.Console.WriteLine (“Velkommen til Edureka !, Happy Learning ..!”) Her, System er den navneområdet. Konsollener at kategorien er skisserti systemnavnområdet. De WriteLine () er detstatiskteknikkav konsollenkategori som brukes til å skrive nedteksten på konsollen.

La oss nå lære oss hvilke datatyper som er tilgjengelige i C #.

Datatyper

Datatypene i C # er delt inn i tre kategorier er beskrevet nedenfor.

Verdidatatyper

De Verdidatatyper ligger i System.ValueType Bibliotek og er alltid klare til å få direkte tilgang til, og variabler kan tilordnes direkte til en bestemt verdi. Verdidatatypene er videre klassifisert i to typer som vist nedenfor:

  • Forhåndsdefinerte datatyper
  • Brukerdefinerte datatyper

Forhåndsdefinerte datatyper: Dette er de som vi vanligvis bruker i vår daglige programmering. Disse datatypene er forhåndsdefinerte av språkutviklerne og holdes klare til bruk for programmererne.

Eksempel:

int, flyte, røye, kort dobbel, etc.

Brukerdefinerte datatyper: Det er situasjoner der vi kanskje trenger å lagre forskjellige verdier fra datatyper i en enkelt variabel. I disse tilfellene er Forhåndsdefinerte datatyper er ikke bare nok. Brukerdefinert Datatyper er som tilpassbare datatyper for brukeren.

Eksempel: Struktur, Enum

Data-type Område for minne tildelt Minnestørrelse
signert røye -128 til 127 1 byte
usignert røye 0 til 127 1 byte
røye -128 til 127 1 byte
signert kort -32 768 til 32 767 2 byte
usignert kort 0 til 65.535 2 byte
kort -32 768 til 32 767 2 byte
signert int -2,147,483,648 til -2,147,483,647 4 byte
usignert int 0 til 4 294 967 295 4 byte
int -2,147,483,648 til -2,147,483,647 4 byte
signert lenge -9,223,372,036,854,775,808 til 9,233,372,036,854,775,807 8 byte
usignert lang 0 til 18.446.744.073.709.551.615 8 byte
lang -9,223,372,036,854,775,808 til 9,233,372,036,854,775,807 8 byte
flyte 1,5 * 10-45 - 3,4 * 1038, (7-sifret presisjon) 4 byte
dobbelt 5,0 * 10-324 - 1,7 * 10308, (15-sifret presisjon) 8 byte
desimal -7,9 * 10-28 - 7,9 * 1028, (28-sifret presisjon) 16 byte


Pointer Datatype

Pointer Type er en enkel datatype. Funksjonaliteten er helt lik pekerne i C. De er designet for å lagre adressen til en annen peker.

flyte * ptr

Referansedatatyper

Navnet er selvforklarende. De Referansedatatyper lagrer faktisk ikke variablene, i stedet lagrer de referanseverdien til den aktuelle variabelen. Med andre ord lagrer de adressen til den faktiske variabelen.

Referansevariablene er klassifisert i tre forskjellige typer som nevnt nedenfor:

  • Objekttype

Objektdatatypen er tilgjengelig i System.Objekt Klasse.Objektettyperkan væretilordnetverdier avde andre typene,referansetyper, forhåndsdefinert, brukerdefinerttyper. Men føroppdragverdier, det krever type omdannelse.

objekt abc abc = 50 // dette kalles boksing
  • Dynamisk type

Dynamiske typevariabler er designet for å lagre nesten alle typer verdier. Det kalles som dynamisk type fordi typekontrollen av verdiene foregår i kjøretid

dynamisk x = 10
  • Strengtype

Strengtypen er tilgjengelig i System. Streng klasse. Stringtypen er designet for å lagre strenglitteratur. String Literals er lagret i to former ito former

    • sitert
    • @ sitert.
Streng S = 'Edureka'
  • De @ sitert streng bokstavelig ser ut
@ Edureka

La oss nå forstå variablene.

Variabler

Variabler er navnene som er tildelt for minneplasseringen som lagrer bestemte data gitt av brukeren, og at data er lett tilgjengelige ved å bruke variabelnavnet. Det er fem typer variabler tilgjengelig i C #

Type Eksempel
Null Null data
Boolsk Sann og usann
Heltall Int, røye, byte, kort, lang
Flyte Flyte og dobbelt
Desimal Desimal

Eksempel:

int a, b doble x float p char abc

Regler som skal følges for å erklære variabler i C #

  • En variabel kan omfatte alfabeter, sifre og understrekninger.
  • Et variabelnavn kan bare starte med et alfabet eller bare en understreking.
  • Variabler kan ikke starte med et siffer eller spesialtegn.
  • Det er ikke tillatt med hvite mellomrom mellom variabelnavnet.
  • Reserverte nøkkelord kan ikke brukes som variabelnavn.

Operatører

En operatør kan defineres som et spesielt symbol som forklarer at datamaskinen skal utføre en bestemt matematikk er en logisk operasjon på et sett med variabler. C # inkluderer en rekke operatører som er nevnt nedenfor.

  • Aritmetiske operatører
  • Relasjonsoperatører
  • Logiske operatører
  • Bitvise operatører
  • Oppdragsoperatører

Aritmetiske operatører

Operatør Eksempel Beskrivelse
+ A + B. Legger til to operander
- A - B Substrakterer to operander
* A * B Flere operander
/ A / B Deler to operander
% A% B Resten av to operasjoner
++ A ++ Inkrementoperasjon
- TIL- Dekrementoperasjon

Relasjonsoperatører

Operatør Eksempel Beskrivelse
== A == B Det er sant at hvis begge operandene er like, Else False
! = A! = B Det er sant at hvis begge operandene ikke er like, Else False
> A> B Det er sant at hvis A er større, ellers falsk
< TIL Det er sant at hvis B er større, ellers falsk
> = A> = B Det er sant at hvis A er større eller lik, ellers falsk
<= TIL<= B Det er sant at id B er større lik, ellers falsk

Logiske operatører

Operatør Eksempel Beskrivelse
&& A && B. Det er sant, hvis begge operandene er sanne, Else False
|| A || B Det er sant, hvis en av operandene er sant, Else False
! A! B Vender den logiske tilstanden til operanden

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 effekten av å 'vende' biter.
<< TIL<<2 Binær venstre skiftoperatør. Venstre operandeverdi flyttes til venstre med antall biter som er angitt av høyre operand.
>> A >> 2 Binær høyre skiftoperatør. Venstre operandeverdi flyttes til høyre med antall bits spesifisert av høyre operand.

Oppdragsoperatører

Operatør Eksempel Beskrivelse
= A = B + C A = B + C, B + C er tildelt A
+ = A + = B A = A + B, A + B er tilordnet A
- = A - = B A = A-B, A-B er tildelt A
* = A - = B A = A * B, A * B er tildelt A
/ = A / = B A = A / B, A / B er tildelt A
% = A% = B A = A% B, A% B er tildelt A
<<= TIL<<= 2 Venstre skift- og oppdragsoperatør
>> = A >> = 2 Right Shift and Assignment Operator
& = A & = 2 Bitvis og oppdragsoperatør
^ = A ^ = 2 Bitwise Exclusive og Assignment Operator
| = A! = 2 Bitwise inkluderende og oppdragsoperatør

Sløyfer

TIL Løkke uttalelse brukes til å utføre en setningsblokk gjentatte ganger til en bestemt tilstand er oppfylt. C # -språket består av følgende sløyfeuttalelser.

  • For Loop
  • Mens Loop
  • Gjør Mens Loop

For Loop

De for løkke brukes til å utføre et bestemt kodesegment flere ganger til den gitte tilstanden er oppfylt.

Syntaks

for (initialiseringstilstandsøkning / -reduksjon) {// kodesegment}

Flytskjema:

Eksempel:

ved hjelp av System offentlig klasse Foreksempel {offentlig statisk tomrom Main (streng [] args) {for (int i = 1 i<= 5 i++) { Console.WriteLine(i) } } } 

//Produksjon:

en
2
3
4
5

Mens Loop

De Mens løkke brukes til å utføre et kodesegment flere ganger til en bestemt tilstand er oppfylt.

Syntaks

mens (tilstand) {// kode som skal utføres}

Flytskjema:

Eksempel:

ved hjelp av systemnavn 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() } } } 

//Produksjon:

Verdien av a: 5
Verdien av a: 6
Verdien av a: 7
Verdien av a: 8
Verdien av a: 9
Verdien av a: 10

Gjør Mens Loop

Gjør mens løkken er helt lik While Loop, men den eneste forskjellen er at tilstanden er plassert på slutten av løkken. Derfor blir løkken utført i det minste en gang.

Syntaks

gjør {// kode som skal utføres} mens (tilstand)

Flytskjema:

Eksempel:

ved hjelp av systemnavneområdet 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, product) i ++} mens (i<= 10) } } } 

//Produksjon:

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 uttalelser brukes til å utføre uttalelse eller gruppe av uttalelser basert på noen tilstand. Hvis den tilstand er sant da C # uttalelser utføres ellers neste uttalelse vil bli henrettet.

Forskjellige typer betingede uttalelser i C ++ språk er som følger:

  1. Hvis uttalelse
  2. Hvis-annet uttalelse
  3. Nestet Hvis-annet uttalelse
  4. Hvis-annet hvis stige
  5. Bytt uttalelse

Hvis uttalelse

Singelen hvis setning i C # språk brukes til å utføre koden hvis en betingelse er oppfylt. Det kalles også enveis utvalgssetning.

Syntaks

if (boolean-expression) {// setninger utført hvis boolean-expression er sant}

Flytskjema:

Eksempel:

bruker 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.') } } } 

//Produksjon:

2 er mindre enn 5
Denne uttalelsen blir alltid utført.

Hvis-annet uttalelse

De hvis-annet setning på C-språk brukes til å utføre koden hvis tilstanden er sann eller usann. Det kalles også toveis utvalgsuttalelse.

Syntaks

if (boolean-expression) {// setninger utført hvis boolean-expression er sant} ellers {// setninger utført hvis boolean-expression er falsk}

Flytskjema:

Eksempel:

bruker systemnavnområdet 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.') } } } 

//Produksjon:

12 er større enn eller lik 5
Denne uttalelsen blir alltid utført.

Nestet Hvis-annet uttalelse

Den nestede hvis-annet uttalelse brukes når et program krever mer enn ett testuttrykk. Det kalles også en flerveis utvalgssetning. Når en serie av avgjørelsen er involvert i en uttalelse, bruker vi hvis-annet uttalelse i nestet form.

Syntaks

hvis (boolsk-uttrykk) {hvis (nestet-uttrykk-1) {// kode som skal utføres} annet {// kode som skal utføres}} annet {hvis (nestet-uttrykk-2) {// kode som skal utføres } annet {// kode som skal utføres}}

Flytskjema:

Eksempel:

bruker systemnavnområdet Betinget {class Nested {public static void Main (string [] args) {int first = 7, second = -23, third = 13 if (first & gt second) {if (first

//Produksjon:

13 er den største

Else-if Ladder

De hvis-annet-hvis uttalelse brukes til å utføre en kode fra flere forhold. Det kalles også flerveis avgjørelsesuttalelse. Det er en kjede av if..else uttalelser der hver if-setning er assosiert med annet hvis utsagn og siste ville være en annen uttalelse.

Syntaks

if (condition1) {// code to be executed if condition1 is true} else if (condition2) {// code to be executed if condition2 is true} else if (condition3) {// code to be executed if condition3 is true} ... ellers {// kode som skal utføres hvis alle vilkårene er falske}

Flytskjema:

Eksempel:

ved hjelp av systemklasse Edureka {public static void Main (String [] args) {int i = 20 if (i == 10) Console.WriteLine ('i is 10') else if (i == 15) Console.WriteLine (' jeg er 15 ') annet hvis (i == 20) Console.WriteLine (' i er 20 ') annet Console.WriteLine (' jeg er ikke til stede ')}}

//Produksjon:

jeg er 20

Bytt uttalelse

Bytte om uttalelse fungerer som en erstatning for en lang if-else-if-stige som brukes til å teste en liste over saker. En bryteruttalelse inneholder en eller flere saksmerker som testes mot bryteruttrykket. Når uttrykket samsvarer med en sak, vil de tilknyttede uttalelsene med den saken bli utført.

Syntaks

switch (variabel / uttrykk) {saksverdi1: // Uttalelser utført hvis uttrykk (eller variabel) = verdi1 bryter saksverdi2: // Uttalelser utført hvis uttrykk (eller variabel) = verdi1 bryter ... ... ... .. ... ... standard: // Uttalelser utført hvis ingen tilfeller stemmer overens}

Flytskjema:

Eksempel:

ved hjelp av systemnavnområdet 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}}}}

//Produksjon:

Skriv inn et alfabet
er
Vokal

Strenger

String Datatype er medlem av System. Streng Klasse. Den er i stand til å lagre karaktertype data. Vi kan utføre forskjellige operasjoner på Stings somsammenføyning, sammenligning, få substring, søk, trim, erstatning og mange flere.

Analogien med streng og streng

I C # String og streng er likeverdige. Ordet streng er en nøkkelord og fungerer som System. Streng klasse. Vi kan bruke en av versjonene til å erklære strenger.

Syntaks:

streng s1 = 'Edureka' // oppretter streng ved hjelp av streng nøkkelord String s2 = 'Happy Learning' // oppretter streng ved hjelp av streng klasse

Eksempel:

ved hjelp av 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) Konsoll.WriteLine ( s1) Console.WriteLine (s2)}}

//Produksjon:

Edureka
Csharp opplæring

Strengmetoder i C #

Metode Beskrivelse
Klon () Brukes til å returnere en referanse til denne forekomsten av String.
Sammenlign (streng, streng) Brukes til å sammenligne to spesifiserte strengobjekter.
Concat (streng, streng) Sammenkoble to spesifiserte forekomster av streng.
Inneholder (streng) Returner en verdi som indikerer en spesifisert understreng
Kopier (streng) Brukes til å opprette en ny forekomst av streng med samme verdi
CopyTo (Int, Char [], Int, Int) Kopierer tegn fra en spesifisert posisjon
Lik (streng, streng) Bestemmer at to strengobjekter har samme verdi.
Format (streng, objekt) Erstatt ett eller flere formatelementer i en spesifisert streng
IndexOf (streng) Rapporterer den nullbaserte indeksen for første forekomst
Sett inn (Int32, streng) Returnerer en ny streng der en streng settes inn i en indeks.
IsInterned (String) Indikerer at denne strengen er i Unicode normalisering form C.
ErNullOrEmpty (streng) Angir at den angitte strengen er null eller en tom streng.
IsNullOrWhiteSpace (streng) Brukes til å indikere om en spesifisert streng er null, tom,
Bli med (String, String []) Brukes til å sammenkoble alle elementene i en strengmatrise
LastIndexOf (Char) Rapporterer den nullbaserte indeksposisjonen til det siste tegnet
LastIndexOfAny (Char []) Rapporterer den nullbaserte indeksposisjonen til det siste tegnet
Fjern (Int32) Returnerer en ny streng der alle tegnene
Erstatt (streng, streng) Returnerer en ny streng der alle forekomster av en streng
Split (Char []) Den brukes til å dele en streng i understrenger
StartsWith (String) Den brukes til å sjekke om begynnelsen på denne strengen
Understreng (Int32) Den brukes til å hente en substring fra denne forekomsten.
ToCharArray () Kopierer tegnene i dette tilfellet til et Unicode-utvalg.
ToString () Den brukes til å returnere forekomsten av String.
Listverk() Trimmer strengen


Arrays

I likhet med andre programmeringsspråk har C # matriser. Arrays er de enkle datastrukturene som er designet for å lagre den samme datatypen av elementer på en sammenhengende minneplassering.

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

  • Single Dimensional Array
  • Flerdimensjonalt array
  • Jagged Array

Single Dimensional Array

Single Dimensional Array lagrer elementer i form av en enkelt rad.

Syntaks

int [] arr = ny int [5] // oppretter matrise

Eksempel:

ved hjelp av 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 

//Produksjon:

10
tjue
30
40
femti

Flerdimensjonalt array

Multidimensjonal matrise lagrer elementer i form av flere dimensjoner som en matrise og en kube etc.

Syntaks

int val = a [2,3]

Eksempel:

ved hjelp av systemnavneområdet 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() } } } 

//Produksjon:

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 ganske enkelt en rekke matriser.

Eksempel:

ved hjelp av systemnavn 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() } } } 

//Produksjon:

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 ganske enkelt betraktes som en gruppe objekter samlet for å bruke noen funksjoner på de innsamlede dataene. Operasjonene som en gang kan utføres på en samling er,

  • lagre objekt
  • oppdater objektet
  • slett objekt
  • hente gjenstand
  • søkeobjekt, og
  • sorter objekt

Typer samlinger

Det er tre forskjellige muligheter for å jobbe med samlinger. De tre navneområdene er nevnt nedenfor:

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

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

  • Liste
  • Stable
  • LinkedList
  • HashSet
  • SortedSet
  • Ordbok
  • SortedDiction
  • SortedList

De System.Collections klasser betraktes som eldre klasser. de inkluderer følgende klasser.

  • ArrayList
  • Stable
  • Hashtable

De System.Collections.Concurrent klassernamespace gir klasser for trådsikker drift. Nå vil ikke flere tråder skape noe problem for tilgang til samleelementene. klassene som er tilgjengelige i dette er,

  • BlockingCollection
  • ConcurrentBag
  • ConcurrentStack
  • ConcurrentQueue
  • Samtidig ordbok
  • Skillevegger
  • Skillevegger
  • OrderablePartitioner

Liste

De liste regnes som en datastruktur tilgjengelig i System.Collection.Generics navneområdet. Den kan lagre og hente elementer. Listen kan lagre dupliserte elementer.

Eksempel:

ved hjelp av System ved hjelp av 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') navn. Legg til ('Kiran') foreach (var navn i navn) {Console.WriteLine (navn)}}}

//Produksjon:

Sandhya
Arun
Prashanth
Kiran

Hash-sett

C # HashSetkategori er ofte vantbutikk,ta bortellerlese komponenter. Dengjør ikke detlagre duplikatkomponenter.det oppfordreså bruke HashSet kategorihvisdu har fåttå lagreutelukkende særegen komponenter . det er finnes i System.Collections.Generic namespace.

Eksempel:

ved hjelp av System ved hjelp av 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') names.Add ('Imran') names.Add ('karan') foreach (var name in names) {Console.WriteLine (name)}}}

//Produksjon:

Sunil
Amar
Pujari
Imran
karan

Sortert sett

C # SortedSetklasse er ofte vantbutikk, ta vekk eller lese elementer . Den opprettholder stigende orden oggjør ikke detlagre duplikatelementer.det er rasktfor å bruke SortedSetkategorihvisdu har fåttå lagre særegen komponenter og opprettholde stigende orden.det erfinnes i System.Collections.Generic namespace.

Eksempel:

ved hjelp av System ved hjelp av 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') names.Add ('Ravi') names.Add ('Kajol') foreach (var name in names) {Console.WriteLine (name)}}}

//Produksjon:

Anuradha
Kajol
Praveen
Ravi
Sanjay

Stable

De stable er en enkel samling som følger KANT eller først i siste ut-prosedyre mens du behandler elementene som er lagret i den.

Eksempel:

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

//Produksjon:

kumar
Rajesh
James
Pooja
Chandan
Tittelement: kumar
Pop: kumar
Etter Pop, Peek-element: Rajesh

Køen er helt lik Stack, men den eneste forskjellen er at køen følger FIFO eller først inn og ut-prinsippet mens du behandler elementene som er lagret i det.

Eksempel:

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

//Produksjon:

Srujan
Prajat
John
voldsom
Dag
Tittelement: Srujan
Dequeue: Srujan
Etter Dequeue, Peek-element: Prajat

Koblet liste

Den koblede listen er en dynamisk minnesamling. Elementene i den koblede listen lagres ved å få tilgang til minnet fra dyngen og lagre elementene i en kontinuerlig rekkefølge ved å koble adressene.

Eksempel:

ved hjelp av System ved bruk av 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') names.AddLast ('jay') names.AddFirst ('sai') foreach (var name in names) {Console.WriteLine (name)}}}

//Produksjon:

sai
Grenser
Arun
Prakash
Jay

Ordbok

Ordbok kategoribrukeridéav hashtabellen. Den lagrer verdiene påpremissetav nøkkelen. Det inneholdersæregennøkleneutelukkende. Avassistansenav nøkkel,det vil vi ganske enkeltsøk ellerta bort elementer.det erfinnes i System.Collections.Generic namespace.

Eksempel:

ved hjelp av System ved hjelp av System.Collections.Generic public class Edureka {public static void Main (string [] args) {Dictionary names = new Dictionary () names.Add ('1', 'Shiva') names.Add ('2', 'Prasad') navn. Legg til ('3', 'Preetam') navn. Legg til ('4', 'Roy') navn. Legg til ('5', 'Akash') foreach (KeyValuePair kv i navn) {Konsoll. WriteLine (kv.Key + '' + kv.Value)}}}

//Produksjon:

1 Shiva
2 Prasad
3 Preetam
4 Roy
5Akash

Sortert ordbok

De SortedDiction kategoribrukerdesignav hashtabellen. Den lagrer verdiene påideenav nøkkelen. Det inneholdersæregentastene og opprettholder stigende rekkefølge påideenav nøkkelen. Avassistansenav nøkkel,det vil vi ganske enkeltsøk ellerta bort elementer.det erfinnes i System.Collections.Generic namespace.

Eksempel:

ved hjelp av System ved hjelp av System.Collections.Generic public class Edureka {public static void Main (string [] args) {SortedDictionary names = new SortedDictionary () names.Add ('1', 'Arun') names.Add ('4', 'Vishal') navn. Legg til ('5', 'Ramesh') navn. Legg til ('3', 'Vidya') navn. Legg til ('2', 'Pallavi') foreach (KeyValuePair kv i navn) {Konsoll. WriteLine (kv.Key + '' + kv.Value)}}}

//Produksjon:

1 Shiva
2 Prasad
3 Preetam
4 Roy
5Akash

Sortert liste

De SortedList erenutvalg av nøkkel / verdipar. Den lagrer verdiene påpremissetav nøkkelen. SortedListkategoriinneholdersæregentastene og opprettholder stigende rekkefølge påpremissetav nøkkelen. Avassistansenav nøkkel,vi klarer det ganske enkeltsøk eller fjernelementer.det erfunnet i System.Collections.Generic navneområdet.

Eksempel:

ved hjelp av System ved hjelp av System.Collections.Generic public class Edureka {public static void Main (string [] args) {SortedDictionary names = new SortedDictionary () names.Add ('1', 'Arun') names.Add ('4', 'Vishal') navn. Legg til ('5', 'Ramesh') navn. Legg til ('3', 'Vidya') navn. Legg til ('2', 'Pallavi') foreach (KeyValuePair kv i navn) {Konsoll. WriteLine (kv.Key + '' + kv.Value)}}}

//Produksjon:

1 Arun
2 Pallavi
3 Vidya
4 Vishal
5Ramesh

Struktur

Strukturen er en brukerdefinert datatype designet for å lagre flere elementer av den forskjellige datatypen. Strukturen er erklært ved hjelp av nøkkelordet struct.

Eksempel:

ved hjelp av 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 ++ Programmeringsveiledning 'Book1.book_id = 95908978 Book2.title =' Telecom Billing 'Book2.author =' Karan 'Book2.subject =' Telecom Billing Tutorial 'Book2.book_id = 18674900 Console.WriteLine ( 'Book 1 title: {0}', Book1.title) Console.WriteLine ('Book 1 Author: {0}', Book1.author) Console.WriteLine ('Book 1 subject: {0}', Book1.subject) Console.WriteLine ('Book 1 book_id: {0}', Book1.book_id) Console.WriteLine ('Book 2 title: {0}', Book2.title) Console.WriteLine ('Book 2 Author: {0}', Book2.author) Console.WriteLine ('Book 2 subject: {0}', Book2.subject) Console.WriteLine ('Book 2 book_id: {0}', Book2.book_id) Console.ReadKey ()}}

//Produksjon:

Bok 1 tittel: C # Programming
Bok 1 Forfatter: Ramchandra Kumar
Bok 1 emne: C ++ Programmeringsveiledning
Book 1 book_id: 95908978
Bok 2 tittel: Telecom Billing
Bok 2 Forfatter: Karan
Bok 2 emne: Telecom Billing Tutorial
Book 2 book_id: 18674900

Funksjoner

Funksjonen er definert som en blokk med hovedkoden. Funksjonen brukes til å utføre utsagn som er spesifisert i kodeblokken. En funksjon består av følgende komponenter.

  • Funksjon navn: Det er et særegent navn som brukes til å ringe en funksjon.
  • Returtype: Den spesifiserer datatypen for funksjonsreturverdien.
  • Kropp: Den inneholder kjørbare uttalelser.
  • Tilgangsspesifikator: Den spesifiserer funksjonstilgjengelighet i applikasjonen.
  • Parametere: Det er en liste over argumenter som vi kan overføre til funksjonen under samtalen.

Syntaks

Funksjonsnavn () {// funksjonslegeme // returuttalelse}

Eksempel:

ved hjelp av systemnavne FunksjonExempel {klasse Edureka {offentlig streng Vis (strengmelding) {Console.WriteLine ('Inside Show Function') returmelding} statisk tomrom Hoved (streng [] args) {Edureka-program = ny Edureka () strengmelding = program .Show ('To Edureka') Console.WriteLine ('Welcome' + message)}}

//Produksjon:

Inside Show Funksjon
Velkommen til Edureka

Funksjoner kan utføres på 3 forskjellige måter:

  • Ring etter verdi
  • Ring etter referanse
  • Ut Parameter

Ring etter verdi

I C #, verdi -type parametereerdet passeten kopiav opprinnelig verdi tilfunksjon i stedet forreferanse. Dengjør ikke detendreden første verdien. Anendring oppretteti beståttverdien ikkeAlderden spesielle verdien.innenfølgende eksempel,vi har fåttsendeverdi gjennomgåendedeanrop.

Eksempel:

ved hjelp av 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 = nytt Edureka () Console.WriteLine ('Verdi før du ringer til funksjonen' + val) program. Vis (val) Console.WriteLine ('Verdi etter å ha ringt funksjonen' + val)}}

//Produksjon:

Verdi før du ringer til funksjonen 50
Verdien inne i showfunksjonen 2500
Verdi etter å ha ringt funksjonen 50

Ring etter referanse

I Call by Reference-metoden,til ref nøkkelord for å overføre argumentet som referansetype. Den sender referansen til argumenter til funksjonen i stedet for en kopi av den opprinnelige verdien. Endringene i beståtte verdier er permanente og endre den opprinnelige variabelverdien.

Eksempel:

ved hjelp av 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 = nytt Edureka () Console.WriteLine ('Verdi før du ringer til funksjonen' + val) program. Vis (ref val) Console.WriteLine ('Verdi etter å ha ringt funksjonen' + val)}}

//Produksjon:

Verdi før du ringer til funksjonen 50
Verdien inne i showfunksjonen 2500
Verdi etter å ha ringt funksjonen 2500

Ut Parameter

Ut-parameterengir ute nøkkelord for å sende argumenter som out-type. Det er som referansetype, bortsett fra at det ikke krever at variabelen initialiseres før den sendes. Vi må bruke ute nøkkelord for å overføre argumentet som out-type. Det er nyttig når vi vil at en funksjon skal returnere flere verdier.

Eksempel:

ved hjelp av systemnavn Space 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 ('Verdi før du sender variabel' + val) program. Vis (ut val) Console.WriteLine ('Verdi etter mottak av ut variabel' + val)}}

//Produksjon:

Verdi før variabel 50 sendes ut

Verdietter mottak av ut-variabelen 25

La oss nå gå til objektorientert programmering

Objektorientert programmering

Objektorientert programmering Systemer et programmeringsparadigme basert på begrepet gjenstander som inneholder data medlemmer og metoder relatert til dem. Hovedformålet med objektorientert programmering er å øke programmenes fleksibilitet og vedlikehold

Funksjoner ved objektorientert programmering:

  • Den vektlegger mer data enn prosedyren.
  • Programmene er delt inn i objekter og gjør det enkelt å jobbe med.
  • Datastrukturer er utformet på en slik måte at de karakteriserer gjenstandene.
  • Funksjoner som fungerer dataene til et objekt er plassert sammen i datastrukturen.
  • Data er skjult og kan ikke nås av eksterne funksjoner uten tillatelse.
  • Kommunikasjon mellom objekter kan skje ved hjelp av funksjoner.
  • Å legge til nye data og funksjoner har blitt enkelt.
  • Følger bottom-up-tilnærmingen i programdesign.

De objektorienterte paradigmene i C # er som følger

Oppregning i C #

Enum eller også kalt som en oppregning i C # brukes til å lagre konstante verdier uten å måtte endre dem under hele utførelsen av et C # -program. Denbrukes til å lagre et sett med navngitte konstanter som årstid, dager, måned, størrelse osv

Eksempel:

ved hjelp av System offentlig klasse Enum Eksempel på {offentlig enum uke {mandag, tirsdag, onsdag, torsdag, fredag, lørdag, søndag} offentlig statisk tomrom Hoved () {int x = (int) uke. Mandag int y = (int) uke. Fredagskonsoll .WriteLine ('Monday = {0}', x) Console.WriteLine ('Friday = {0}', y)}}

//Produksjon:

Mandag = 0
Fredag ​​= 4

Objektorientert programmeringsmetode

Den objektorienterte stilen for programmering kan oppnås ved å følge metodene som er foreskrevet nedenfor.

Innkapsling

Innkapsling er en metode for å kombinere metoder sammen med deres data medlemmer.

Eksempel:

ved hjelp av systemnavneområdet Edureka {class Rectangle {public double length public double width public double GetArea () {return length * width} public void Display () {Console.WriteLine ('Length: {0}', length) Console.WriteLine (' Bredde: {0} ', bredde) Console.WriteLine (' Area: {0} ', GetArea ())}} class ExecuteRectangle {static void Main (string [] args) {Rectangle r = new Rectangle () r.length = 50 r.width = 35 r.Display () Console.ReadLine ()}}}

//Produksjon:

Lengde: 50
Bredde: 35
Område: 1750

Abstraksjon

Abstraksjon er en metode for å gjemme seg den komplekse kodingsdelen fra brukeren ved å gi ham bare den nødvendige informasjonen han trenger.

Eksempel:

ved hjelp av System offentlig abstrakt klasse Form {offentlig abstrakt ugyldig tegning ()} offentlig klasse Rektangel: Form {offentlig overstyring ugyldig tegning () {Console.WriteLine ('tegning rektangel ...')}} offentlig klasse Sirkel: Form {offentlig overstyring ugyldig tegne () {Console.WriteLine ('tegnesirkel ...')}} offentlig klasse TestAbstrakt {offentlig statisk tomrom Hoved () {Form ss = ny rektangel () s.draw () s = ny sirkel () s.draw ()}}

//Produksjon:

tegning rektangel ...
tegne sirkel ...

Grensesnitt

De grensesnitt er helt lik Abstraksjon. Funksjonaliteten til et grensesnitt er å skjule de viktige dataene fra brukeren og gi ham de eneste viktige dataene han trenger.

Eksempel:

ved hjelp av System offentlig grensesnitt Tegning {void draw ()} public class Rectangle: Drawable {public void draw () {Console.WriteLine ('drawing rectangle ...')}} public class Circle: Drawable {public void draw () {Console .WriteLine ('tegnesirkel ...')}} offentlig klasse TestInterface {offentlig statisk tomrom Hoved () {Tegneserisk dd = ny rektangel () d.draw () d = ny sirkel () d.draw ()}}

//Produksjon:

tegning rektangel ...
tegne sirkel ...

Polymorfisme

Polymorfismeer kombinasjonen av “Poly” + “Morphs” som betyr mange former. Det er et gresk ord. Det betyr at kodesegmentet kan ta opp flere former. Vi har to typer polymorfisme.

  • Kompilere tidspolymorfisme
  • Run Time Polymorphism

Eksempel:

ved hjelp av 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.farge)}}

//Produksjon:

hvit

Arv

Arv er en prosess der ett objekt tilegner seg alle egenskapene og oppførselen til det overordnede objektet automatisk. Du kan gjenbruke, utvide eller endre attributtene og atferdene som er definert i andre klasser. klassen som arver medlemmene av en annen klasse kalles avledet klasse og klassen hvis medlemmer blir arvet kalles utgangspunkt klasse. Den avledede klassen er den spesialiserte klassen for basisklassen.

Eksempel på enkeltnivåarv

ved hjelp av systemnavneområde RectangleApplication {class Rectangle {beskyttet dobbel lengde beskyttet dobbel bredde offentlig Rektangel (dobbel l, dobbel w) {lengde = l bredde = w} offentlig dobbel GetArea () {returlengde * bredde} offentlig tom Visning () {Konsoll. WriteLine ('Length: {0}', length) Console.WriteLine ('Width: {0}', width) Console.WriteLine ('Area: {0}', GetArea ())}} class Tableop: Rectangle {private dobbel kostnad offentlig Bordplate (dobbel l, dobbel w): base (l, w) {} offentlig dobbel GetCost () {dobbel kostnad = GetArea () * 70 returkostnad} offentlig ugyldig Display () {base.Display () Konsoll .WriteLine ('Cost: {0}', GetCost ())}} class ExecuteRectangle {static void Main (string [] args) {Tabletop t = new Tableop (4.5, 7.5) t.Display () Console.ReadLine () }}}

//Produksjon:

Lengde: 4.5
Bredde: 7,5
Område: 33,75
Kostnad: 2362,5

Eksempel på flernivåarv

ved hjelp av systemnavneområde ArvApplikasjon {class Shape {public void setWidth (int w) {width = w} public void setHeight (int h) {height = h} protected int width protected int height} public interface PaintCost {int getCost (int area)} class Rectangle: Shape, PaintCost {public int getArea () {return (width * height)} public int getCost (int area) {return area * 70}} class RectangleTester {static void Main (string [] args) {Rectangle Rect = nytt Rectangle () int-område Rect.setWidth (5) Rect.setHeight (7) area = Rect.getArea () Console.WriteLine ('Total area: {0}', Rect.getArea ()) Console.WriteLine ('Total malingskostnad: $ {0} ', Rect.getCost (area)) Console.ReadKey ()}}}

//Produksjon:

Totalt areal: 35
Total malingskostnad: $ 2450

Overbelastning

Overbelastning er en situasjon der vi har to eller medlemmer erklært med samme navn. Overbelastning er også mulig når vi også deklarerer to eller flere metoder med samme navn. La oss sjekke eksempler på begge deler.

Overbelastning av medlemmer

Eksempel:

ved hjelp av System offentlig klasse 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))}}

//Produksjon:

35
60

Metode Overbelastning

Eksempel:

ved hjelp av 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))}}

//Produksjon:

35
33.699997

Overstyring

Overstyring er en situasjon der barneklasse definerer den samme metoden som foreldrene også definerer. La oss forstå dette gjennom et lite eksempel.

Eksempel:

ved hjelp av System offentlig klasse Edureka {offentlig virtuelt ugyldig spise () {Console.WriteLine ('Spise')}} offentlig klasse Hund: Edureka {offentlig overstyre ugyldig spise () {Console.WriteLine ('Spise mat')}} offentlig klasse Overstyring {public static void Main () {Dog d = new Dog () d.eat ()}}

//Produksjon:

Spiser mat

Navneområde

De navneområdet brukes i utgangspunktet til å håndtere flere klasser som er til stede i programmet. Navneområdet er tilgjengelig på forskjellige måter.

  • System.Konsoll: Her, den System blir navneområdet
  • For å få tilgang til klassen i et navnerom, må vi bruke namespacename.classname.
  • Vi kan bruke ved hjelp av nøkkelord også.

Eksempel:

bruker System ved å bruke First ved å bruke 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 Namespace {public static void Main () {Edureka h1 = new Edureka () Happy_Learning w1 = new Happy_Learning () h1.sayWelcome () w1.sayWishes ()}}

//Produksjon:

Velkommen til Edureka
Glad læring

Filoperasjoner

De filoperasjoner tilgjengelig i C # er som følger:

Operasjon Beskrivelse
BinaryReader Les primitive data fra en binær strøm.
BinaryWriter Skriver primitive data i binært format.
BufferedStream Midlertidig lagring for en strøm av byte.
Katalog Hjelper med å manipulere en katalogstruktur.
DirectoryInfo Brukes til å utføre operasjoner i kataloger.
DriveInfo Gir informasjon for stasjonene.
Fil Hjelper med å manipulere filer.
FileInfo Brukes til å utføre operasjoner på filer.
FileStream Brukes til å lese fra og skrive til et hvilket som helst sted i en fil.
MemoryStream Brukes for tilfeldig tilgang til streamede data lagret i minnet.
Sti Utfører operasjoner på stiinformasjon.
StreamReader Brukes til å lese tegn fra en byte-strøm.
StreamWriter Brukes til å skrive tegn til en strøm.
StringReader Brukes til å lese fra en strengbuffer.
StringWriter Brukes til å skrive inn i en strengbuffer.

FileMode

De FileMode er en teller som definerer flere filåpningsmetoder. Medlemmene av FileMode Enumerator er beskrevet som følger:

  • Legg til: Den åpner en eksisterende fil og setter markøren på slutten av filen, eller oppretter filen hvis filen ikke eksisterer.
  • Skape: Den er designet for å lage en ny fil.
  • Lag ny: Den er designet for å spesifisere for operativsystemet at den skal opprette en ny fil.
  • Åpen: Den er designet for å åpne en eksisterende fil.
  • OpenOrCreate: Den er designet for å spesifisere operativsystemet at den skal åpne en fil hvis den eksisterer, ellers skal den opprette en ny fil.
  • Avkort Trunkerer åpner en eksisterende fil og avkorter størrelsen til null byte.

FileAccess

FileAccess Enumerator brukes til å få tilgang til en bestemt fil. Den har følgende medlemmer.

  • Lese
  • Skrive
  • Les Skriv

Fildeling

De Fildeling Enumerator brukes til å dele en bestemt fil. Den har følgende medlemmer.

  • Arvelig: Arvelig gjør at et filhåndtak kan overføre en arv til barnets prosesser.
  • Ingen: Ingen avviser deling av den nåværende filen
  • Lese: Les lar deg åpne filen for lesing.
  • Les Skriv: ReadWrite åpner filen for lesing og skriving.
  • Skrive: Skriv gjør det mulig å åpne filen for skriving.

arrangementer

En hendelse er generelt kjent som en handling som genereres av brukeren. Det kan være et museklikk og til og med et enkelt tastetrykk fra tastaturet. Tilsvarende har C # -programmer også arrangementer. Arrangøren av arrangementet kalles forlegger og mottakeren av arrangementet kalles abonnent.

Forlegger

TIL forlegger inneholder definisjonen av arrangementet og delegaten. De event-delegat tilknytning er definert i dette objektet. EN forlegger klasseobjekt påkaller hendelsen og den blir varslet til andre objekter.

Abonnent

TIL abonnent godtar arrangementet og gir en hendelsesbehandler. De delegat i forlagsklassen påkaller metoden / hendelsen behandler av abonnentklassen.

Eksempel:

ved hjelp av systemnavn Edureka {offentlig delegatstreng Del (strengstr) klasse EventBlock {hendelse Del NewEvent offentlig EventBlock () {this.NewEvent + = ny Del (this.WelcomeUser)} offentlig streng WelcomeUser (streng brukernavn) {return 'Velkommen til Edureka . '+ brukernavn} statisk tomrom Main (string [] args) {EventBlock obj1 = new EventBlock () string result = obj1.NewEvent (' Happy Learning ') Console.WriteLine (result)}}}

//Produksjon:

Velkommen til Edureka. Glad læring

Generiske

Generiske er et konsept for å gi medlemmene og metodene til en klasse plassholdere i Kjøretid. Vi kan definere Generics ved hjelp av braketter. La oss sjekke ut eksemplene nedenfor.

Generikk i en klasse

bruker systemnavneområdet Edureka {class GenericClass {public GenericClass (T msg) {Console.WriteLine (msg)}} class Program {static void Main (string [] args) {GenericClass gen = new GenericClass ('Denne meldingen er fra generisk klasse' ) GenericClass genI = new GenericClass (123) GenericClass getCh = new GenericClass ('E')}}

//Produksjon:

Denne meldingen er fra generisk klasse
123
ER

Generiske i en metode

ved hjelp av systemnavneområdet 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 meldingen er fra den generiske metoden ') genC.Show (321) genC.Show (' H ')}}}

//Produksjon:

Denne meldingen er fra den generiske metoden
321
H

Delegater

De Delegat fungerer som en referanse til metoden. I utgangspunktet er det det samme som en funksjonspeker i C og C ++ men langt bedre og typesikker. Delegaten i statisk metode innkapsler bare metoden. Mens delegaten i forekomst metoden innkapsler både metode og forekomst. Den beste bruken av delegat er å bruke som en begivenhet.

Eksempel:

ved hjelp av System delegate int Kalkulator (int n) offentlig klasse Edureka {statisk int tall = 25 offentlig statisk int add (int n) {nummer = nummer + n retur nummer} offentlig statisk int mul (int n) {nummer = antall * n retur number} public static int getNumber () {return number} public static void Main (string [] args) {Calculator c1 = new Calculator (add) Calculator c2 = new Calculator (mul) c1 (20) Console.WriteLine ('After calculator en delegat, det nye nummeret er: '+ getNumber ()) c2 (3) Console.WriteLine (' Etter kalkulator to delegater er det nye nummeret: '+ getNumber ())}}

//Produksjon:

Etter kalkulator en delegat er det nye tallet: 45
Etter kalkulator to delegater er det nye tallet: 135

Speilbilde

Refleksjonen er nødvendig for å skaffe metadataene i løpetid. Referansen er tilgjengelig i System. Refleksjon navneområdet. Det krever følgende klasser for å utføre.

  • Type
  • MemberInfo
  • ConstructorInfo
  • MethodInfo
  • FieldInfo
  • PropertyInfo
  • TypeInfo
  • EventInfo
  • Modul
  • montering
  • Monteringsnavn
  • Peker

Type klasse

C # Type klasse representerer typedeklarasjoner for klassetyper, grensesnitttyper, nummereringstyper, matrityper, verdityper

Skriv inn egenskaper

En liste over viktige egenskaper for typeklasser er nevnt nedenfor.

Eiendom Beskrivelse
montering Får forsamlingen for denne typen.
AssemblyQualifiedName Får forsamlingen kvalifisert navn for denne typen.
Attributter Henter attributtene som er knyttet til typen.
BaseType Får basen eller foreldretypen.
Fullt navn Får det fullstendige navnet på typen.
Er abstrakt brukes til å sjekke om typen er abstrakt.
IsArray brukes til å sjekke om typen er Array.
IsClass brukes til å sjekke om typen er klasse.
IsEnum brukes til å sjekke om typen er Enum.
Er grensesnitt brukes til å sjekke om typen er grensesnitt.
Er nestet brukes til å sjekke om typen er nestet.
Er primitiv brukes til å sjekke om typen er primitiv.
IsPointer brukes til å sjekke om typen er peker.
Er ikke offentlig brukes til å sjekke om typen ikke er Offentlig.
IsPublic brukes til å sjekke om typen er Offentlig.
Er forseglet brukes til å sjekke om typen er forseglet.
Kan Serialiseres brukes til å sjekke om typen kan Serialiseres.
Medlemstype brukes til å sjekke om typen er medlemstype av nestet type.
Modul Får modulen av typen.
Navn Får navnet på typen.
Navneområde Får navneområdet til typen.
Eiendom Beskrivelse
GetConstructors () Returnerer alle offentlige konstruktører for typen.
GetConstructors (BindingFlags) Returnerer alle konstruktørene for typen med spesifiserte bindingsflagg.
GetFields () Returnerer alle de offentlige feltene for typen.
GetFields (BindingFlags) Returnerer alle offentlige konstruktører for typen med spesifiserte BindingFlags.
GetMembers () Returnerer alle offentlige medlemmer for typen.
GetMembers (BindingFlags) Returnerer alle medlemmene for typen med spesifiserte BindingFlags.
GetMethods () Returnerer alle de offentlige metodene for typen.
GetMethods (BindingFlags) Returnerer alle metodene for typen med spesifiserte BindingFlags.
GetProperties () Returnerer alle offentlige eiendommer for typen.
GetProperties (BindingFlags) Returnerer alle egenskapene for typen med spesifiserte BindingFlags.
GetType () Får gjeldende type.
GetType (streng) Henter typen for det gitte navnet.

Eksempler på refleksjon:

Få Type

Eksempel:

ved hjelp av System offentlig klasse GetType {public static void Main () {int a = 10 Type type = a.GetType () Console.WriteLine (type)}}

//Produksjon:

System.Int32

Få montering

Eksempel:

bruker System ved hjelp av System.Reflection offentlig klasse GetAssembly {public static void Main () {Type t = typeof (System.String) Console.WriteLine (t.Assembly)}}

//Produksjon:

System.Private.CoreLib, versjon = 4.0.0.0, kultur = nøytral, PublicKeyToken = 7cec85d7bea7798e

Utskriftstypeinformasjon

Eksempel:

bruker System ved hjelp av 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)}}

//Produksjon:

ekte
Falsk
Falsk

Skriv ut konstruksjoner

Eksempel:

ved hjelp av System ved hjelp av 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 in ci) {Console.WriteLine (c)}}}

//Produksjon:

Konstruktører av systemstrenger ...
Void .ctor (Char [])
Void .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])

Utskriftsmetoder

Eksempel:

bruker System ved hjelp av System.Reflection public class PrintMethods {public static void Main () {Type t = typeof (System.String) Console.WriteLine ('Methods of {0} type ...', t) MethodInfo [] ci = t .GetMethods (BindingFlags.Public | BindingFlags.Instance) foreach (MethodInfo m in ci) {Console.WriteLine (m)}}}

//Produksjon:

Metoder for systemstrengetype ...
System.String Erstatt (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) ......

Skriv ut felt

Eksempel:

bruker System ved hjelp av System.Reflection public class 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)}}}

//Produksjon:

Felt av system. Strengtype ...
System.Streng tom

La oss nå gå videre til noen avanserte C # programmeringskonsepter

Avanserte C # -konsepter

Anonym funksjon

Funksjonen som mangler et bestemt navn kalles Anonym Funksjoner. Det er to typer anonyme funksjoner tilgjengelig i C #

  • Lambda Expressions
  • Anonyme metoder

Eksempel:

ved hjelp av systemnavn 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)}}}

//Produksjon:

Firkant: 625

Anonyme metoder

De anonym metode gir samme funksjonalitet som en lambda uttrykk, bortsett fra at det lar oss ignorere parameterlisten.

Eksempel:

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

//Produksjon:

Dette er anonym funksjon

Multi-Threading

Multithreading er en prosess der flere tråder opprettes og tildeles for forskjellige oppgaver. Dette sparer tid ved å utføre flere jobber om gangen. Multithreading-klassen er tilgjengelig i System.Tråding navneområdet.

System.Trading Navneområde

De System.Tråding navneområdet inneholder klasser og grensesnitt for å lette multitrading. Det gir klasser for å synkronisere trådressursen. En liste over vanlige klasser er gitt nedenfor:

lage en pakke i java
  • Tråd
  • Mutex
  • Timer
  • Observere
  • Semafor
  • Trådlokal
  • ThreadPool
  • Flyktige

Prosess og tråd

Prosessen er faktisk og applikasjon og det anses å være et tungvekt komponent. På den annen side er tråden en singel modul av hele søknaden. Det er lett sammenlignet med prosessen

Trådenes livssyklus

Hver tråd har en livssyklus. Trådens livssyklus er definert i klassen System.Threading.Thread. Følgende er trinnene i livssyklusen til en hvilken som helst tråd.

  • Ikke startet
  • Runnable (Klar til å kjøre)
  • Løping
  • Ikke kjørbar
  • Død

Trådklassen gir følgende egenskaper og metoder som følger.

Trådegenskaper

Eiendom Beskrivelse
Gjeldende tråd returnerer forekomsten av den nåværende tråden.
Er i live sjekker om gjeldende tråd er i live eller ikke.
IsBackground Å få / angi verdien av gjeldende tråd er i bakgrunnen eller ikke.
ManagedThreadId brukes til å få den unike id-en for den nåværende administrerte tråden.
Navn brukes til å hente eller sette navnet på den gjeldende tråden.
Prioritet brukes til å få eller sette prioriteten til den gjeldende tråden.
ThreadState brukes til å returnere en verdi som representerer trådtilstanden.

Gjengemetoder

Metode Beskrivelse
Abort() brukes til å avslutte tråden. Det hever ThreadAbortException.
Avbryte() brukes til å avbryte en tråd som er i WaitSleepJoin-tilstand.
Bli med() brukes til å blokkere alle ringetrådene til denne tråden avsluttes.
ResetAbort () brukes til å avbryte forespørselen om avbrudd for gjeldende tråd.
Gjenoppta() brukes til å gjenoppta den hengende tråden. Det er foreldet.
Sleep (Int32) brukes til å suspendere gjeldende tråd i de angitte millisekundene.
Start() endrer trådens nåværende tilstand til Runnable.
Utsette() suspenderer gjeldende tråd hvis den ikke er suspendert. Det er foreldet.
Utbytte() brukes til å gi utførelsen av gjeldende tråd til en annen tråd.

Hovedtrådeksempel

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

//Produksjon:

Hovedtråd

Avvikshåndtering

De unntak er en feil som kastes av programmet i løpetid. Vi utfører Exception-Handling for å gjøre programmet unntaksfritt.

Unntak Beskrivelse
System.DivideByZeroException Feil generert ved å dele et tall med null.
System.NullReferenceException håndterer feilen generert ved å referere til null-objektet.
System.InvalidCastException håndterer feilen generert av ugyldig typecasting.
System.IO.IO Unntak håndterer inn / ut feilene.
System.FieldAccessException Feil generert av ugyldig privat / beskyttet tilgang.

I C # bruker vi fire nøkkelord for å utføre avvikshåndtering:

  • prøve
  • å fange
  • endelig, og
  • kaste
Eksempel:
ved hjelp av 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 meldingen er fra fangstblokk')}}

//Produksjon:

System.DivideByZeroException: Forsøkt å dele med null.
på ExExaEdurekample.Main (String [] args) i F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: line 10
Denne meldingen er fra fangstblokk

Tilpasset unntakseksempel

bruker System offentlig klasse InvalidAgeException: Unntak {public InvalidAgeException (strengmelding): base (melding) {}} 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.') } } 

//Produksjon:

InvalidAgeException: Beklager, Age forventes å være større enn 18
på Customized.validate (Int32 age) i F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: line 18
på Customised.Main (String [] args) i F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: line 23
Fangstblokk utføres nå.

Endelig blokk eksempel

bruker System offentlig klasse FinalExecption {offentlig statisk tomrom Hoved (streng [] args) {prøv {int a = 10 int b = 0 int x = a / b} fangst (Unntak e) {Console.WriteLine (e)} til slutt {Console .WriteLine ('Endelig utføres blokkering')} Console.WriteLine ('Fangstblokk utføres')}}

//Produksjon:

System.DivideByZeroException: Forsøkt å dele med null.
på FinalExecption.Main (String [] args) i F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: line 10
Endelig utføres blokk
Fangstblokk utføres

System Unntak signatur

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

System unntak konstruktører

Bygger Beskrivelse
System unntak () Den brukes til å initialisere en ny forekomst av klassen SystemException.
System unntak

(SerializationInfo, StreamingContext)

Den brukes til å initialisere en ny forekomst av SystemException-klassen med seriell data.
SystemException (streng) Den brukes til å initialisere en ny forekomst av SystemException-klassen med en spesifisert feilmelding.
SystemException (streng, unntak) Den brukes til å initialisere en ny forekomst av SystemException-klassen med en spesifisert feilmelding og en referanse til det indre unntaket som er årsaken til dette unntaket.

Egenskaper for system unntak

Eiendom Beskrivelse
Data Den brukes til å få en samling nøkkel / verdipar som gir ytterligere brukerdefinert informasjon om unntaket.
HelpLink Den brukes til å hente eller sette en lenke til hjelpefilen tilknyttet dette unntaket.
HResult Den brukes til å hente eller stille HRESULT, en kodet numerisk verdi som er tilordnet et spesifikt unntak.
Indre unntak Den brukes til å få unntaksforekomsten som forårsaket det gjeldende unntaket.
Beskjed Den brukes til å få en melding som beskriver gjeldende unntak.
Kilde Den brukes til å hente eller angi navnet på applikasjonen som forårsaker feilen.
StackTrace Den brukes til å få en strengrepresentasjon av de umiddelbare rammene på samtalestakken.
TargetSite Den brukes til å få metoden som kaster det gjeldende unntaket.

Metoder for system unntak

Metoder Beskrivelse
Lik (Objekt) Den brukes til å kontrollere at det spesifiserte objektet er lik det nåværende objektet eller ikke.
Fullfør () Den brukes til å frigjøre ressurser og utføre oppryddingsoperasjoner.
GetBaseException () Det brukes til å få rot unntak.
GetHashCode () Den brukes til å få hash-koden.
GetObjectData

(SerializationInfo, StreamingContext)

Den brukes til å få objektdata.
GetType () Den brukes til å hente kjøretidstypen for gjeldende forekomst.
MemberwiseClone () Den brukes til å lage en grunne kopi av gjeldende objekt.
ToString () Den brukes til å opprette og returnere en strengrepresentasjon av det gjeldende unntaket.

Eksempel på system unntak

ved hjelp av systemnavneområdet CSharpProgram {class SystemExceptionExample {static void Main (string [] args) {try {int [] arr = new int [5] arr [10] = 25} catch (SystemException e) {Console.WriteLine (e)} }}}

//Produksjon:

System.IndexOutOfRangeException: Indeks var utenfor matrisen.
på CSharpProgram.SystemExceptionExample.Main (String [] args) i F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: line 11

Synkronisering

Synkronisering kan være en teknikk som bare gjør det mulig for en tråd å få tilgang til ressursen i en bestemt tid. Ingen alternativ tråd vil avbryte før den valgte tråden er ferdig med oppgaven.

I flertrådeprogram er tråder tillattfor å få tilgang til en hvilken som helst ressurs forspesifisert utførelsetid. Tråder deler ressurser og kjører asynkront. Få tilgang til delte ressurser (data)kan være en viktig oppgavedet genereltkunne stoppesystemet.vi har en tendens til å påvirke detved å lage tråder på en synkron måte.

Eksempel uten synkronisering

bruker System ved hjelp av 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() } } 

//Produksjon:

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

Eksempel med synkronisering

bruker System ved hjelp av System.Trådeklasse 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() } } 

//Produksjon:

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

Nye funksjoner

Microsoft har lagt til mange nyeste funksjoner til C # språk, noen av dem er nevnt nedenfor.

C # 6.0

  • Bruke statisk direktiv
  • Unntak filtre
  • Vent i fangst / til slutt blokker
  • Initialiserer for automatisk eiendom
  • Standardverdier for bare getter-egenskaper
  • Medlemmer med uttrykk
  • Null propagator
  • Strenginterpolasjon
  • Navn på operatør
  • Ordlisteinitialiser
  • Compiler-as-a-service (Roslyn)

C # 7.0

  • Mønster matching
  • Tuples
  • Dekonstruksjon
  • Lokale funksjoner
  • Sifferutskiller
  • Binære bokstaver
  • Ref kommer tilbake og lokalbefolkningen
  • Ekspressjonsbyggere og sluttbehandlere
  • Uttrykk bodied getters og setters
  • Ut variabler
  • Generaliserte asynkroniseringstyper

C # 7.1

  • Async hoved
  • Standarduttrykk

Intervjuespørsmål basert på C #

Det viktige intervjuet Spørsmål basert på C # Programming Language finner du i denne oppdaterte .

Med dette kommer vi til en slutt på denne 'C # Tutorial' -artikkelen. Jeg håper du har forstått viktigheten av datastrukturer, syntaks, funksjonalitet og operasjoner som utføres med dem. Nå som du har forstått det grunnleggende om programmering i C # gjennom detteC # Opplæring, sjekk ut opplæring gitt av Edureka på mange teknologier som Java, Vår og mangemer, et pålitelig online læringsfirma med et nettverk av mer enn 250 000 fornøyde elever spredt over hele kloden fikk en spørsmål til oss? Nevn det i kommentarfeltet til denne 'C # Tutorial' -bloggen, så kommer vi tilbake til deg så snart som mulig.