C # Tutorial: De grundläggande saker du behöver för att behärska C #



Denna artikel om C # -handledning hjälper dig med en detaljerad kunskap om C # -underlag tillsammans med realtidsexempel för en bättre förståelse.

C # är mångsidigt och det robusta programmeringsspråket som utvecklades av Microsoft Corporation år 2000 som en dödlig konkurrent till Java. Det är mest populärt och ett dominerande programmeringsspråk när det gäller både webbutveckling och utveckling av desktopapplikationer.

I denna C # -handledning lär vi oss följande begrepp.





C # Grunder

Introduktion till C # programmeringsspråk

Tillbaka i början av 90-talet var Java det ledande programmeringsspråket för webbutveckling, utveckling av skrivbordsapplikationer och många andra områden. Microsoft ville komma med en konkurrent med många avancerade funktioner som kan lämna Java långt efter.



C#-Tutorial-hejlsberg_bio

Det var år 2000, Anders Hejlsberg och hans Microsoft-team kom på idén om C # populärt kallad C-Sharp. Detta initiativ godkändes av International Standards Organization (STÖRRE) och European Computer Manufacturers Association (ECMA). och slutligen kommer C # in i världen av mjukvaruutveckling.

Funktioner i C # programmeringsspråk



  • Objektorienterat programmeringsspråk

Objektorienterad programmering är det som gör C # skarpt till att vara det mest programmerarvänliga och lätt att utveckla och underhålla programmeringsspråk.

  • Typsäkert språk

Betydelsen av Type-Safe är att kompilatorn endast får åtkomst till den minnesplats som har tillstånd att köra. Den här funktionen förbättrar kodsäkerheten till en exponentiell nivå.

  • Interoperabilitet

Funktionen med driftskompatibilitet gör att C # är tillräckligt kapabel för att göra allt som är infödd i C ++ på ett mer effektivt sätt som kan överträffa C ++ själv.

  • Rich Library

C # ger åtkomst till flera antal inbyggda bibliotek som tillhandahåller förprogrammerade funktioner för att minska tiden i utvecklingsprocessen.

  • Skalbar och kan uppdateras

C # var utformad för att vara överlägsen bland andra programmeringsspråk. Därför är det alltid öppet för uppdateringar och det håller sig mycket skalbart med sina funktioner.

  • Komponentorienterad

Utvecklarna på Microsoft använde den komponentbaserade metoden för att utveckla C #. Detta är den mest dominerande utvecklingsmetoden för att hålla C # mycket skalbar och uppdaterad.

  • Strukturerat språk

Den strukturerade programmeringsmetoden föredras under programvaruutvecklingens livscykel eftersom det blir lätt att utveckla kompilera och distribuera programvaran jämfört med det procedurorienterade programmeringssättet.

  • Snabb

C # -programmering råkar vara snabbare i sammanställning och körning jämfört med C ++ och andra programmeringsspråk.

Installation

Det är bevisat att Microsoft Visual Studio är klassens bästa redaktör för C # -programmering. Vi installerar och ställer in Microsoft Visual Studio för körning av våra C # -program genom att följa stegen nedan:

Steg 1 : Ladda ner Microsoft Visual Studio

Google för senaste versionen av Visual Studio och ladda ner Installera filen till ditt lokala system och sedan springa installationsfilen som en administratör.

Steg 2: Välj .NET Desktop Development Package

När du har kört installationsprogrammet kommer Visual Studio Editor att laddas ner till ditt lokala system. Senare kommer en dialogruta att visas på din skrivbordsskärm som frågar fienden a särskilt paket du behöver i ditt system. Här måste du välja .NET Desktop Development paket.

Steg 3: Ställ in C # miljö

När dina paket för .NET utveckling laddas ner, kommer en annan dialogruta att visas på din skärm där du frågar efter den utvecklingsmiljö du letar efter. Här måste du välj miljö för C #.

Steg 4: Skapa ditt första projekt

När miljön är inställd är ni alla klara. Starta din Visual Studio och välj skapa nytt projekt alternativ i den visade dialogrutan.

Du kommer att omdirigeras till nästa dialogruta och där måste du välja Klassbibliotek som .NET Standard enligt nedanstående.

I nästa dialogruta kommer du att bli ombedd att göra det Konfigurera ditt projekt . Konfigurera det och du är nu i Editor. Skriv ditt första program och springa den. Utgången visas framgångsrikt på Kommandotolken.

med systemklass Edureka {static void Main (string [] args) {Console.WriteLine ('Welcome to Edureka !, Happy Learning ..!')}}

//Produktion:

Låt oss genomföra vårt första C # -program.

C # Programstruktur

Nu när vi har kört vårt första C # -program, låt oss förstå dess struktur i detalj. Ett enkelt C # -program har följande delar.

använder systemnamnsområdet ConsoleApplication1 {public class Edureka {public static void Main (string [] args) {Console.WriteLine ('Welcome to Edureka !, Happy Learning ..!')}}}

//Produktion:

Välkommen till Edureka !, Happy Learning ..!

  • klass: klass kan generellt definieras som en nyckelord som används för att definiera en klass i C # -programmet.
  • Edureka: Det är namnet på Klass. Klass betraktas ofta som en ritning som lagrar medlemmar och metoder relaterade till klassen.
  • Huvud: I grund och botten är det primär metod av hela C # -programmet fungerar det som gateway för kontrollen att komma in i programmet. Det körs innan någon annan metod för programmet körs.
  • tomhet: Detta segment av koden är utsedd till returtyp av metoden. Det kan vara vilken datatyp som helst som är ogiltig. Void betyder att metoden inte har några data som returneras från den.
  • statisk: Det här är en nyckelord vilket säger att de deklarerade datamedlemmarna är statiska och ett dedikerat minne tilldelas de deklarerade medlemmarna.
  • Sträng [] argumenterar: Det liknar de kommandoradsargument som vi använder i vårt program. Medan vi kör vårt program passerar vi i princip några argument, som kommer att accepteras av programmet på grund av detta uttalande.
  • System.Console.WriteLine (“Välkommen till Edureka !, Happy Learning ..!”) Här, Systemet är namnområde. Konsolenär att den kategori som beskrivsi systemnamnsområdet. De Skrivlinje() är det attstatiskMetodav konsolenkategori som används för att skriva nertexten på konsolen.

Låt oss nu lära oss de datatyper som finns tillgängliga i C #.

Datatyper

Datatyperna i C # är indelade i tre kategorier beskrivs nedan.

Värde Datatyper

De Värde Datatyper finns i System.ValueType Bibliotek och är alltid redo att nås direkt och variabler kan tilldelas direkt till ett visst värde. Värdedatatyperna klassificeras vidare i två typer enligt nedan:

  • Fördefinierade datatyper
  • Användardefinierade datatyper

Fördefinierade datatyper: Det är de som vi normalt använder i vår dagliga programmering. Dessa datatyper är fördefinierade av språkutvecklarna och hålls redo att användas för programmerarna.

Exempel:

int, float, char, kort dubbel, etc.

Användardefinierade datatyper: Det finns situationer där vi kan behöva lagra olika värden från datatyper i en enda variabel. I dessa fall har Fördefinierade datatyper räcker inte bara. Användardefinierad Datatyper är som anpassningsbara datatyper för användaren.

Exempel: Struktur, Enum

Data typ Räckvidd för tilldelat minne Minnesstorlek
signerad röding -128 till 127 1 byte
osignerad röding 0 till 127 1 byte
röding -128 till 127 1 byte
signerad kort -32 768 till 32 767 2 byte
osignerad kort 0 till 65 535 2 byte
kort -32 768 till 32 767 2 byte
signerad int -2,147,483,648 till -2,147,483,647 4 bytes
osignerad int 0 till 4 294 967 295 4 bytes
int -2,147,483,648 till -2,147,483,647 4 bytes
signerad lång -9,223,372,036,854,775,808 till 9,233,372,036,854,775,807 8 byte
osignerad lång 0 till 18,446,744,073,709,551,615 8 byte
lång -9,223,372,036,854,775,808 till 9,233,372,036,854,775,807 8 byte
flyta 1,5 * 10-45 - 3,4 * 1038, (7-siffrig precision) 4 bytes
dubbel 5,0 * 10-324 - 1,7 * 10308, (15-siffrig precision) 8 byte
decimal- -7,9 * 10-28 - 7,9 * 1028, (28-siffrig precision) 16 byte


Pekare Datatyp

Pointer Type är en enkel datatyp. Dess funktionalitet är helt lik pekare i C. De är utformade för att lagra adressen till en annan pekare.

flyta * ptr

Referensdatatyper

Namnet är självförklarande. De Referensdatatyper lagrar faktiskt inte variablerna, utan lagrar referensvärdet till just den variabeln. Med andra ord lagrar de adressen till den faktiska variabeln.

Referensvariablerna klassificeras i tre olika typer enligt nedan:

  • Objekt typ

Objektdatatypen finns i System. Objekt Klass.Objektettyperkan varatilldelatsvärden påde andra typerna,referenstyper, fördefinierad, användardefinieradtyper. Men innanuppdragvärden, det kräver typ omvandling.

objekt abc abc = 50 // detta kallas boxning
  • Dynamisk typ

Dynamiska typvariabler är utformade för att lagra nästan alla typer av värden. Det kallas som dynamisk typ eftersom typkontrollen av värden sker i körtid

dynamisk x = 10
  • Strängtyp

Strängtypen finns i System. Sträng klass. Strängtypen är utformad för att lagra stränglitteratur. Stränglitteraturen lagras i två former itvå former

    • citerade
    • @citerat.
Sträng S = 'Edureka'
  • De @citerat sträng bokstavlig ser ut
@ 'Edureka'

Låt oss nu förstå variablerna.

Variabler

Variabler är de namn som tilldelats minnesplatsen som lagrar viss data som ges av användaren och att data är lättillgängliga med hjälp av variabelnamnet. Det finns fem typer av variabler tillgängliga i C #

Typ Exempel
Null Noll data
Boolean Sant och falskt
Heltal Int, Char, Byte, Short, Long
Flyta Flyta och dubbel
Decimal Decimal

Exempel:

int a, b dubbel x float p char abc

Regler som ska följas för att deklarera variabler i C #

  • En variabel kan innehålla alfabet, siffror och understrykningar.
  • Ett variabelt namn kan bara börja med ett alfabet eller en understrykning.
  • Variabler kan inte börja med en siffra eller ett specialtecken.
  • Vita mellanslag är inte tillåtna mellan variabelnamnet.
  • Reserverade nyckelord får inte användas som variabla namn.

Operatörer

En operatör kan definieras som en speciell symbol som förklarar att datorn ska utföra en viss matematik är en logisk operation på en uppsättning variabler. C # innehåller en mängd olika operatörer som nämns nedan.

  • Aritmetiska operatörer
  • Relationsoperatörer
  • Logiska operatörer
  • Bitvisa operatörer
  • Uppdragsoperatörer

Aritmetiska operatörer

Operatör Exempel Beskrivning
+ A + B. Lägger till två operander
- A - B Substrakterar två operander
* A * B Flera två operander
/ A / B Delar två operander
% A% B Resten av två operander
++ A ++ Inkrementoperation
- TILL- Minskning

Relationsoperatörer

Operatör Exempel Beskrivning
== A == B. Det är sant, om båda operanderna är lika, annars falskt
! = A! = B Det är sant, om båda operanderna inte är lika, annars falskt
> A> B Det är sant om A är större, annars falskt
< TILL Det är sant om B är större, annars falskt
> = A> = B Det är sant, om A är större eller lika, annars falskt
<= TILL<= B Det är sant att id B är större lika, annars falskt

Logiska operatörer

Operatör Exempel Beskrivning
&& A && B. Det är sant, om båda operanderna är sanna, annars falskt
|| A || B Det är sant, om en av operanderna är sant, annars falskt
! A! B Återställer det logiska tillståndet för operanden

Bitvisa operatörer

TILL B A & B A | B A ^ B
ett ett ett ett 0
ett 0 0 ett ett
0 ett 0 ett ett
0 0 0 0 0
Operatör Exempel Beskrivning
~ (~ A) Binary One's Complement Operator är unary och har effekten att 'vända' bitar.
<< TILL<<2 Binär vänster skiftoperatör. Det vänstra operandevärdet flyttas åt vänster med antalet bitar som anges av den högra operanden.
>> A >> 2 Binär höger skiftoperatör. Det vänstra operandevärdet flyttas åt höger med antalet bitar som anges av den högra operanden.

Uppdragsoperatörer

Operatör Exempel Beskrivning
= A = B + C. A = B + C, B + C tilldelas A
+ = A + = B A = A + B, A + B tilldelas A
- = A - = B A = A-B, A-B tilldelas A
* = A - = B A = A * B, A * B tilldelas A
/ = A / = B A = A / B, A / B tilldelas A
% = A% = B A = A% B, A% B tilldelas A
<<= TILL<<= 2 Vänster skift och uppdragsoperatör
>> = A >> = 2 Right Shift and Assignment Operator
& = A & = 2 Bitvis och uppdragsoperatör
^ = A ^ = 2 Bitvis exklusiv och uppdragsoperatör
| = A! = 2 Bitvis inkluderande och uppdragsoperatör

Öglor

TILL slinga uttalande används för att utföra ett block av uttalanden upprepade gånger tills ett visst villkor är uppfyllt. C # -språket består av följande loop-uttalanden.

  • För Loop
  • While Loop
  • Gör medan Loop

För Loop

De för loop används för att utföra ett visst kodsegment flera gånger tills det angivna villkoret är uppfyllt.

Syntax

för (initialiseringsvillkor inkrement / minskning) {// kodsegment}

Flödesschema:

Exempel:

använder System public class ForExample {public static void Main (string [] args) {for (int i = 1 i<= 5 i++) { Console.WriteLine(i) } } } 

//Produktion:

ett
2
3
4
5

While Loop

De While loop används för att utföra ett kodesegment flera gånger tills ett specifikt villkor är uppfyllt.

Syntax

medan (villkor) {// kod som ska köras}

Flödesschema:

Exempel:

använder systemnamnsrymden loopar {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ärdet av a: 5
Värdet av a: 6
Värdet av a: 7
Värdet av a: 8
Värdet av a: 9
Värdet av a: 10

hur man blir ingenjör för artificiell intelligens

Gör medan Loop

Gör medan slingan liknar While Loop men den enda skillnaden är att villkoret är placerat i slutet av slingan. Därför körs slingan åtminstone en gång.

Syntax

gör {// kod som ska köras} medan (villkor)

Flödesschema:

Exempel:

använder systemnamnsområ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, produkt) i ++} medan (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

Villkorlig

Villkorliga uttalanden används för att utföra påstående eller grupp av uttalanden baserat på något tillstånd. Om skick är sant då C # uttalanden utförs annars nästa påstående kommer att köras.

Olika typer av villkorliga uttalanden i C ++ språk är följande:

  1. Om uttalande
  2. Om-Annat uttalande
  3. Nested If-else-uttalande
  4. Om-Annars om stege
  5. Byt uttalande

Om uttalande

Singeln om uttalande i C # språk används för att köra koden om ett villkor är sant. Det kallas också envägsuttalande.

Syntax

if (boolean-expression) {// uttalanden om boolean-expression är sant}

Flödesschema:

Exempel:

använder systemnamnutrymme Villkorligt {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 är mindre än 5
Detta uttalande utförs alltid.

Om-Annat uttalande

De om annat uttalande i C-språk används för att köra koden om villkoret är sant eller falskt. Det kallas också tvåvägs urvalsuttalande.

Syntax

if (boolean-expression) {// uttalanden exekveras om boolean-expression är sant} annat {// uttalanden om boolean-expression är falskt}

Flödesschema:

Exempel:

använder systemnamnutrymme Villkorlig {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 är större än eller lika med 5
Detta uttalande utförs alltid.

Nested If-else-uttalande

Den kapslade om annat uttalande används när ett program kräver mer än ett testuttryck. Det kallas också ett flervägsval. När en serie av beslutet är inblandade i ett uttalande använder vi det om annat uttalande i kapslad form.

Syntax

if (boolean-expression) {if (nested-expression-1) {// code to be executed} else {// code to be executed}} else {if (nested-expression-2) {// code to be executed } annat {// kod som ska köras}}

Flödesschema:

Exempel:

använder systemnamnutrymme Villkorlig {class Nested {public static void Main (string [] args) {int first = 7, second = -23, third = 13 if (first & gt second) {if (first

//Produktion:

13 är den största

Annars om stege

De if-else-if uttalande används för att köra en kod från flera villkor. Det kallas också flervägsbeslutsuttalande. Det är en kedja av if..else uttalanden där varje if-uttalande är associerat med annat om uttalande och sista skulle vara ett annat uttalande.

Syntax

om (villkor1) {// kod som ska köras om villkor1 är sant} annars om (villkor2) {// kod som ska köras om villkor2 är sant} annars om (villkor3) {// kod som ska utföras om villkor3 är sant} ... annars {// kod ska köras om alla villkor är falska}

Flödesschema:

Exempel:

använder systemklass Edureka {public static void Main (String [] args) {int i = 20 if (i == 10) Console.WriteLine ('i is 10') annars om (i == 15) Console.WriteLine (' jag är 15 ') annars om (i == 20) Console.WriteLine (' i är 20 ') annars Console.WriteLine (' jag är inte närvarande ')}}

//Produktion:

jag är 20

Byt uttalande

Växla uttalande fungerar som en ersättning för en lång if-else-if-stege som används för att testa en lista över fall. Ett switch-uttalande innehåller en eller flera falletiketter som testas mot switch-uttrycket. När uttrycket matchar ett ärende skulle de associerade uttalandena med det fallet köras.

Syntax

switch (variabel / uttryck) {fallvärde1: // Uttalanden utförs om uttryck (eller variabel) = värde1 bryt ärendevärde2: // Uttalanden utförs om uttryck (eller variabel) = värde1 bryts ... ... ... ... ... standard: // Uttalanden utförs om inget ärende matchar}

Flödesschema:

Exempel:

använder systemnamnutrymme Villkorlig {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:

Ange ett alfabet
är
Vokal

Strängar

Sträng Datatyp är medlem i System. Sträng Klass. Den kan lagra tecken typ av data. Vi kan utföra olika operationer på Stings somsammanfogning, jämförelse, att få substring, sökning, trimning, utbyte och många fler.

Analogin mellan sträng och sträng

I C # Sträng och sträng är likvärdiga. Ordsträngen är en nyckelord och fungerar som System. Sträng klass. Vi kan använda någon av versionerna för att deklarera strängar.

Syntax:

string s1 = 'Edureka' // skapa sträng med strängordnyckel String s2 = 'Happy Learning' // skapa sträng med hjälp av strängklass

Exempel:

använder System public class 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 '} sträng s2 = ny sträng (ch) Console.WriteLine ( s1) Console.WriteLine (s2)}}

//Produktion:

Edureka
Csharp Tutorial

Strängmetoder i C #

Metod Beskrivning
Klona() Används för att returnera en referens till den här instansen av String.
Jämför (Sträng, Sträng) Används för att jämföra två angivna strängobjekt.
Concat (sträng, sträng) Sammanfoga två angivna förekomster av sträng.
Innehåller (sträng) Returnera ett värde som anger en angiven understräng
Kopiera (sträng) Används för att skapa en ny instans av sträng med samma värde
CopyTo (Int, Char [], Int, Int) Kopierar tecken från en viss position
Lika (sträng, sträng) Bestämmer att två strängobjekt har samma värde.
Format (sträng, objekt) Ersätt ett eller flera formatobjekt i en angiven sträng
IndexOf (sträng) Rapporterar det nollbaserade indexet för den första förekomsten
Infoga (Int32, Sträng) Returnerar en ny sträng där en sträng infogas i ett index.
IsInterned (String) Indikerar att den här strängen är i Unicode-normaliseringsform C.
IsNullOrEmpty (sträng) Anger att den angivna strängen är null eller en tom sträng.
IsNullOrWhiteSpace (sträng) Används för att ange om en angiven sträng är null, tom,
Gå med (String, String []) Används för att sammanfoga alla element i en strängmatris
LastIndexOf (Char) Rapporterar den nollbaserade indexpositionen för det sista tecknet
LastIndexOfAny (Char []) Rapporterar den nollbaserade indexpositionen för det sista tecknet
Ta bort (Int32) Returnerar en ny sträng i vilken alla tecken
Ersätt (sträng, sträng) Returnerar en ny sträng där alla förekomster av en sträng
Split (Char []) Den används för att dela en sträng i underlag
StartsWith (String) Den används för att kontrollera om början på denna sträng
Substring (Int32) Den används för att hämta en substring från denna instans.
ToCharArray () Kopierar tecknen i detta fall till en Unicode-matris.
Att stränga() Det används för att returnera förekomsten av String.
Trim() Trimmar strängen


Arrayer

I likhet med andra programmeringsspråk har C # matriser. Arrays är de enkla datastrukturerna som är utformade för att lagra samma datatyp av element i en angränsande minnesplats.

C # stöder följande arraytyper.

  • Single Dimensional Array
  • Flerdimensionell matris
  • Jagged Array

Single Dimensional Array

Single Dimensional Array lagrar element i form av en enda rad.

Syntax

int [] arr = ny int [5] // skapa array

Exempel:

använder System public class ArrayExample {public static void Main (string [] args) {int [] arr = new int [5] arr [0] = 10 arr [1] = 20 arr [2] = 30 arr [3] = 40 arr [4] = 50 för (int i = 0 i 

//Produktion:

10
tjugo
30
40
femtio

Flerdimensionell matris

Multidimensionell matris lagrar element i form av flera dimensioner som en matris och en kub etc.

Syntax

int val = a [2,3]

Exempel:

med hjälp av systemnamnområ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 för (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 är helt enkelt en uppsättning matriser.

Exempel:

använder systemnamnområdet 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 för (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

Samlingar

Samling kan helt enkelt betraktas som en grupp objekt som samlas in tillsammans för att tillämpa vissa funktioner på den insamlade informationen. De operationer som en gång kan utföra på en samling är,

  • lagra objekt
  • uppdatera objekt
  • ta bort objekt
  • hämta objekt
  • sökobjekt och
  • sortera objekt

Typer av samlingar

Det finns tre olika möjligheter att arbeta med samlingar. De tre namnområdena nämns nedan:

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

System.Collections.Generic Class har följande varianter av klasser:

  • Lista
  • Stack
  • Länkad lista
  • HashSet
  • SortedSet
  • Ordbok
  • SortedDiction
  • SortedList

De System.Collections klasser betraktas som äldre klasser. de inkluderar följande klasser.

  • ArrayList
  • Stack
  • Hashtable

De System.Collections.Concurrent klassernamespace tillhandahåller klasser för trådsäkra operationer. Nu kommer flera trådar inte att skapa problem för åtkomst till samlingsobjekten. klasserna i detta är,

  • BlockingCollection
  • ConcurrentBag
  • ConcurrentStack
  • ConcurrentQueue
  • ConcurrentDictionary
  • Partitioner
  • Partitioner
  • OrderablePartitioner

Lista

De lista anses vara en datastruktur som finns tillgänglig i System.Collection.Generics namnområde. Det kan lagra och hämta element. Listan kan lagra dubbla element.

Exempel:

använder System med 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') namn. Lägg till ('Kiran') foreach (var namn i namn) {Console.WriteLine (namn)}}}

//Produktion:

Sandhya
En springtur
Prashanth
Kiran

Hash-uppsättning

C # HashSetkategori är ofta vanaLagra,hämtmatellerläsa komponenter. denintelagra duplikatkomponenter.det uppmanasatt använda HashSet kategoriomdu haratt förvaraenbart distinkt komponenter . dess finns i System.Collections.Generic namespace.

Exempel:

använder System med 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') namn. Lägg till ('Imran') namn. Lägg till ('karan') foreach (var namn i namn) {Console.WriteLine (namn)}}}

//Produktion:

Sunil
Amar
Pujari
Imran
karan

Sorterad uppsättning

C # SortedSetklass är ofta vanaLagra, ta bort eller läsa element . Den upprätthåller stigande ordning ochintelagra duplikatelement.det är snabbtför att använda SortedSetkategoriomdu haratt förvara distinkt komponenter och upprätthålla stigande ordning.dessfinns i System.Collections.Generic namespace.

hur man kör php på Windows 10

Exempel:

använder System med 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)}}}

//Produktion:

Anuradha
Kajol
Praveen
Ravi
Sanjay

Stack

De stack är en enkel samling som följer KANT eller först i sista ut-proceduren medan du bearbetar elementen som är lagrade i den.

Exempel:

använder System med 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') namn.Push ('Rajesh') names.Push ('kumar') foreach (strängnamn i namn) {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
Tittelement: kumar
Pop: kumar
Efter Pop, Peek-element: Rajesh

Kön liknar helt Stack men den enda skillnaden är att kön följer FIFO eller först in och ut-princip när du bearbetar elementen som är lagrade i den.

Exempel:

använder System med 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') namn.Enqueue ('Raju') namn.Enqueue ('Hari') foreach (strängnamn i namn) {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
Våldsam
Dag
Tittelement: Srujan
Dequeue: Srujan
Efter Dequeue, Peek-element: Prajat

Länkad lista

Den länkade listan är en dynamisk minnessamling. Elementen i den länkade listan lagras genom att komma åt minnet från högen och lagra elementen i en kontinuerlig ordning genom att länka deras adresser.

Exempel:

använder System med 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') namn.AddLast ('jay') namn.AddFirst ('sai') foreach (var namn i namn) {Console.WriteLine (namn)}}}

//Produktion:

sai
Gräns
En springtur
Prakash
jay

Ordbok

Ordbok kategorianvänderaningav hashtabellen. Det lagrar värden påpremissenav nyckeln. Det innehållerdistinktknapparnaenbart. Förbiassistansenav nyckel,det gör vi helt enkeltsök ellerta bort element.dessfinns i System.Collections.Generic namespace.

Exempel:

använder System med System.Collections.Generic public class Edureka {public static void Main (string [] args) {Dictionary names = new Dictionary () names.Add ('1', 'Shiva') names.Add ('2', 'Prasad') namn. Lägg till ('3', 'Preetam') namn. Lägg till ('4', 'Roy') namn. Lägg till ('5', 'Akash') foreach (KeyValuePair kv i namn) {Console. WriteLine (kv.Key + '' + kv.Värde)}}}

//Produktion:

1 Shiva
2 Prasad
3 Preetam
4 Roy
5Akash

Sorterad ordbok

De SortedDiction kategorianvänderdesignav hashtabellen. Det lagrar värden påidénav nyckeln. Det innehållerdistinkttangenter och behåller stigande ordning denidénav nyckeln. Förbiassistansenav nyckel,det gör vi helt enkeltsök ellerta bort element.dessfinns i System.Collections.Generic namespace.

Exempel:

använder System med System.Collections.Generic public class Edureka {public static void Main (string [] args) {SortedDictionary names = new SortedDictionary () names.Add ('1', 'Arun') names.Add ('4', 'Vishal') namn. Lägg till ('5', 'Ramesh') namn. Lägg till ('3', 'Vidya') namn. Lägg till ('2', 'Pallavi') foreach (KeyValuePair kv i namn) {Console. WriteLine (kv.Key + '' + kv.Värde)}}}

//Produktion:

1 Shiva
2 Prasad
3 Preetam
4 Roy
5Akash

Sorterad lista

De SortedList ärettarray av nyckel / värdepar. Det lagrar värden påpremissenav nyckeln. SortedListkategoriinnehållerdistinkttangenter och behåller stigande ordning denpremissenav nyckeln. Förbiassistansenav nyckel,vi kan helt enkeltsök eller ta bortelement.desshittades i System.Collections.Generic namnområde.

Exempel:

använder System med System.Collections.Generic public class Edureka {public static void Main (string [] args) {SortedDictionary names = new SortedDictionary () names.Add ('1', 'Arun') names.Add ('4', 'Vishal') namn. Lägg till ('5', 'Ramesh') namn. Lägg till ('3', 'Vidya') namn. Lägg till ('2', 'Pallavi') foreach (KeyValuePair kv i namn) {Console. WriteLine (kv.Key + '' + kv.Värde)}}}

//Produktion:

1 Arun
2 Pallavi
3 Vidya
4 Vishal
5Ramesh

Strukturera

Strukturen är en användardefinierad datatyp utformad för att lagra flera element av olika datatyp. Strukturen deklareras med hjälp av nyckelordet struct.

Exempel:

använder 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 ++ Programmeringshandledning 'Book1.book_id = 95908978 Book2.title =' Telecom Billing 'Book2.author =' Karan 'Book2.subject =' Telecom Billing Tutorial 'Book2.book_id = 18674900 Console.WriteLine ( 'Bok 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:

Bok 1 titel: C # Programmering
Bok 1 Författare: Ramchandra Kumar
Bok 1 ämne: C ++ Programmering Tutorial
Bok 1 bok_id: 95908978
Bok 2: Telekomfakturering
Bok 2 Författare: Karan
Bok 2 ämne: Telecom Billing Tutorial
Bok 2 book_id: 18674900

Funktioner

Funktionen definieras som ett kodblock för huvudkoden. Funktionen används för att utföra uttalanden som anges i kodblocket. En funktion består av följande komponenter.

  • Funktionsnamn: Det är ett distinkt namn som används för att ringa ett funktionssamtal.
  • Returtyp: Den specificerar datatypen för funktionsreturvärde.
  • Kropp: Den innehåller körbara uttalanden.
  • Åtkomstspecifikator: Det specificerar funktionens tillgänglighet i applikationen.
  • Parametrar: Det är en lista med argument som vi kan skicka till funktionen under samtalet.

Syntax

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

Exempel:

använder systemnamnsutrymme FunctionExample {class Edureka {public string Show (string message) {Console.WriteLine ('Inside Show Function') return meddelande} static void Main (string [] args) {Edureka program = new Edureka () string message = program .Show ('Till Edureka') Console.WriteLine ('Välkommen' + meddelande)}}}

//Produktion:

Inside Show-funktion
Välkommen till Edureka

Funktioner kan utföras på tre olika sätt:

  • Ring efter värde
  • Ring genom referens
  • Ut Parameter

Ring efter värde

I C #, värde -typ parametrarärdet passeten replikaav ursprungligt värde förfunktion istället förreferens. deninteändradet första värdet. Ettändringsförslag skapatin passeradevärde inteÅlderdet specifika värdet.inomföljande exempel,vi harpasseravärde hela tidendering upp.

Exempel:

använder systemnamnområdet 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 ('Värde innan du anropar funktionen' + val) program. Show (val) Console.WriteLine ('Value after calling the function' + val)}}

//Produktion:

Värde innan du anropar funktionen 50
Värdet inuti showfunktionen 2500
Värde efter att ha anropat funktionen 50

Ring genom referens

I Call by Reference-metoden,till ref nyckelord för att skicka argumentet som referens-typ. Det skickar referensen till argument till funktionen snarare än en kopia av det ursprungliga värdet. Ändringarna i godkända värden är permanenta och ändra det ursprungliga variabla värdet.

Exempel:

använder systemnamnområdet 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 ('Värde innan du ringer till funktionen' + val) -program. Visa (ref val) Console.WriteLine ('Värde efter att anropa funktionen' + val)}}

//Produktion:

Värde innan du anropar funktionen 50
Värdet inuti showfunktionen 2500
Värde efter att ha anropat funktionen 2500

Ut Parameter

Ut-parameterntillhandahåller ut nyckelord för att skicka argument som out-type. Det är som referens-typ, förutom att det inte kräver att variabeln initialiseras innan den passeras. Vi måste använda ut nyckelord för att skicka argumentet som out-type. Det är användbart när vi vill att en funktion ska returnera flera värden.

Exempel:

använder systemnamnutrymme 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 ('Value before sending out variable' + val) program. Show (out val) Console.WriteLine ('Value after recieving the out variable' + val)}}

//Produktion:

Värde innan variabel 50 skickas ut

Värdeefter att ha fått ut variabeln 25

Låt oss nu gå till objektorienterad programmering

Objektorienterad programmering

Objektorienterad programmering Systemetär ett programmeringsparadigm baserat på begreppet objekt som innehåller datamedlemmar och metoder relaterade till dem. Det primära syftet med objektorienterad programmering är att öka programmens flexibilitet och underhåll

Funktioner i objektorienterad programmering:

  • Det fokuserar mer på data snarare än på procedur.
  • Programmen är indelade i objekt vilket gör det enkelt att arbeta med.
  • Datastrukturer är utformade på ett sådant sätt att de karakteriserar objekten.
  • Funktioner som fungerar data för ett objekt placeras tillsammans i datastrukturen.
  • Data är dold och kan inte nås av externa funktioner utan tillstånd.
  • Kommunikation mellan objekt kan ske med hjälp av funktioner.
  • Att lägga till nya data och funktioner har blivit enkelt.
  • Följer nedifrån och upp-metoden i programdesign.

De objektorienterade paradigmerna i C # är som följer

Uppräkning i C #

Enum eller kallas också som en uppräkning i C # används för att lagra konstanta värden utan att behöva ändra dem under hela körningen av ett C # -program. denanvänds för att lagra en uppsättning namngivna konstanter som säsong, dagar, månad, storlek etc.

Exempel:

använder System public class EnumExempel på {public enum week {måndag, tisdag, onsdag, torsdag, fredag, lördag, söndag} offentlig statisk tomrum Huvud () {int x = (int) vecka. Måndag int y = (int) vecka. Fredagskonsol .WriteLine ('Monday = {0}', x) Console.WriteLine ('Friday = {0}', y)}}

//Produktion:

Måndag = 0
Fredag ​​= 4

Objektorienterad programmeringsmetod

Den objektorienterade programmeringsstilen kan uppnås genom att följa metoderna nedan.

Inkapsling

Inkapsling är en metod för att kombinera metoder tillsammans med deras datamedlemmar.

Exempel:

använder systemnamnutrymme 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 (' Bredd: {0} ', bredd) Console.WriteLine (' Area: {0} ', GetArea ())}} klass ExecuteRectangle {statisk tomrum Main (string [] args) {Rectangle r = new Rectangle () r.length = 50 r.bredd = 35 r.Display () Console.ReadLine ()}}}

//Produktion:

Längd: 50
Bredd: 35
Område: 1750

Abstraktion

Abstraktion är en metod för att Dölj den komplexa kodningsdelen från användaren genom att endast förse honom med den nödvändiga informationen han behöver.

Exempel:

använder System public abstract class Shape {public abstract void draw ()} public class Rectangle: Shape {public override void draw () {Console.WriteLine ('drawing rectangle ...')}} public class Circle: Shape {public override void draw () {Console.WriteLine ('ritningscirkel ...')}} public class TestAbstract {public static void Main () {Shape ss = new Rectangle () s.draw () s = new Circle () s.draw ()}}

//Produktion:

ritning rektangel ...
rita cirkel ...

Gränssnitt

De gränssnitt liknar helt abstraktion. Ett gränssnitts funktionalitet är att dölja de viktiga uppgifterna från användaren och förse honom med de enda viktiga uppgifterna han behöver.

Exempel:

med systemets offentliga gränssnitt Drawable {void draw ()} public class Rectangle: Drawable {public void draw () {Console.WriteLine ('drawing rectangle ...')}} public class Circle: Drawable {public void draw () {Console .WriteLine ('ritningscirkel ...')}} offentlig klass TestInterface {public static void Main () {Drawable dd = new Rectangle () d.draw () d = new Circle () d.draw ()}}

//Produktion:

ritning rektangel ...
rita cirkel ...

Polymorfism

Polymorfismär kombinationen av 'Poly' + “Morphs” vilket betyder många former. Det är ett grekiskt ord. Det betyder att kodsegmentet kan ta upp flera former. Vi har två typer av polymorfism.

  • Kompilera tidspolymorfism
  • Kör tidspolymorfism

Exempel:

använder systemet offentlig klass Djur {offentlig strängfärg = 'vit'} offentlig klass Hund: Djur {offentlig strängfärg = 'svart'} offentlig klass TestSealed {offentlig statisk tomrum Huvud () {Djur d = ny hund () Console.WriteLine ( d.färg)}}

//Produktion:

vit

Arv

Arv är en process där ett objekt automatiskt förvärvar alla egenskaper och beteenden hos det överordnade objektet. Du kan återanvända, utöka eller ändra attribut och beteenden som definieras i andra klasser. den klass som ärver medlemmarna i en annan klass kallas härledd klass och den klass vars medlemmar ärvs kallas bas klass. Den härledda klassen är specialklassen för basklassen.

Exempel på arv på en nivå

med hjälp av systemnamnsområdet RectangleApplication {class Rectangle {skyddad dubbel längd skyddad dubbel bredd offentlig Rektangel (dubbel l, dubbel w) {längd = l bredd = w} allmän dubbel GetArea () {returlängd * bredd} offentlig tomrum Display () {Konsol. WriteLine ('Length: {0}', length) Console.WriteLine ('Width: {0}', width) Console.WriteLine ('Area: {0}', GetArea ())}} class Tableop: Rectangle {private dubbel kostnad offentlig Bordsskiva (dubbel l, dubbel w): bas (l, w) {} offentlig dubbel GetCost () {dubbel kostnad = GetArea () * 70 returkostnad} offentlig ogiltig Display () {bas. 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ängd: 4,5
Bredd: 7,5
Område: 33,75
Kostnad: 2362,5

Exempel på arv på flera nivåer

med hjälp av systemnamnrymd InheritanceApplication {class Shape {public void setWidth (int w) {width = w} public void setHeight (int h) {height = h} skyddad int bredd skyddad int höjd} 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 färgkostnad: $ {0} ', Rect.getCost (area)) Console.ReadKey ()}}}

//Produktion:

Total yta: 35
Total färgkostnad: $ 2450

Överbelastning

Överbelastning är en situation där vi har två eller medlemmar deklarerade med samma namn. Överbelastning är också möjligt när vi också deklarerar två eller flera metoder med samma namn. Låt oss kontrollera exempel på båda.

Medlem överbelastning

Exempel:

använder 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 { public static void Main () {Console.WriteLine (Edureka.add (12, 23)) Console.WriteLine (Edureka.add (12, 23, 25))}}

//Produktion:

35
60

Metod överbelastning

Exempel:

använder 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

Åsidosättande

Åsidosättande är en situation där barnklass definierar samma metod som föräldern definierar också. Låt oss förstå detta genom ett litet exempel.

Exempel:

använder 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:

Äter mat

Namnområde

De namnområde används i grunden för att hantera flera klasser som finns i programmet. Namnytan finns på olika sätt.

  • System.Konsol: Här, den Systemet blir namnområdet
  • För att komma åt klassen i ett namnområde måste vi använda namespacename.classname.
  • Vi kan använda använder sig av nyckelord också.

Exempel:

använder System med First med 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 klass Namnutrymme {public static void Main () {Edureka h1 = new Edureka () Happy_Learning w1 = new Happy_Learning () h1.sayWelcome () w1.sayWishes ()}}

//Produktion:

Välkommen till Edureka
Lyckligt lärande

Filhantering

De filhantering tillgängliga i C # är följande:

Drift Beskrivning
BinaryReader Läser primitiva data från en binär ström.
BinaryWriter Skriver primitiva data i binärt format.
BufferedStream Tillfällig lagring för en ström av byte.
Katalog Hjälper till att manipulera en katalogstruktur.
DirectoryInfo Används för att utföra operationer i kataloger.
DriveInfo Ger information för enheterna.
Fil Hjälper till att manipulera filer.
Filinformation Används för att utföra åtgärder på filer.
FileStream Används för att läsa från och skriva till valfri plats i en fil.
MemoryStream Används för slumpmässig åtkomst till strömmad data lagrad i minnet.
Väg Utför åtgärder på väginformation.
StreamReader Används för att läsa tecken från en byte-ström.
StreamWriter Används för att skriva tecken till en ström.
StringReader Används för att läsa från en strängbuffert.
StringWriter Används för att skriva in en strängbuffert.

FileMode

De FileMode är en uppräkare som definierar flera filöppningsmetoder. Medlemmarna i FileMode Enumerator beskrivs enligt följande:

  • Bifoga: Den öppnar en befintlig fil och placerar markören i slutet av filen eller skapar filen om filen inte finns.
  • Skapa: Den är utformad för att skapa en ny fil.
  • Skapa ny: Den är utformad för att specificera för operativsystemet att den ska skapa en ny fil.
  • Öppet: Den är utformad för att öppna en befintlig fil.
  • OpenOrCreate: Den är utformad för att specificera operativsystemet att den ska öppna en fil om den finns, annars skulle den skapa en ny fil.
  • Stympa: Trunkerar öppnar en befintlig fil och trunkerar storleken till noll byte.

FileAccess

FileAccess Enumerator används för att få åtkomst till en viss fil. Den har följande medlemmar.

  • Läsa
  • Skriva
  • Läsa skriva

Fildelning

De Fildelning Enumerator används för att dela en viss fil. Den har följande medlemmar.

  • Ärftlig: Inheritable tillåter en filhandtag att överföra ett arv till barnets processer.
  • Ingen: Ingen avvisar delning av den aktuella filen
  • Läsa: Läs gör det möjligt att öppna filen för läsning.
  • Läsa skriva: Med ReadWrite kan du öppna filen för läsning och skrivning.
  • Skriva: Skriv gör det möjligt att öppna filen för skrivning.

evenemang

En händelse är allmänt känd som en åtgärd som genereras av användaren. Det kan vara ett musklick och till och med ett enda tangenttryckning från tangentbordet. På samma sätt har C # -program också händelser. Generatorn av evenemanget kallas utgivare och mottagaren av evenemanget kallas abonnent.

Utgivare

TILL utgivare innehåller definitionen av evenemanget och delegaten. De event-delegat association definieras i detta objekt. A utgivare klassobjekt åberopar händelsen och den meddelas till andra objekt.

Abonnent

TILL abonnent accepterar evenemanget och tillhandahåller en händelsehanterare. De delegera i förlagsklassen åberopar metoden / händelsen hanterare av abonnentklassen.

Exempel:

med systemnamn 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 . '+ användarnamn} statisk tomrum Huvud (sträng [] args) {EventBlock obj1 = new EventBlock () string result = obj1.NewEvent (' Happy Learning ') Console.WriteLine (result)}}}

//Produktion:

Välkommen till Edureka. Lyckligt lärande

Generika

Generika är ett koncept att förse medlemmarna och metoderna för en klass med platshållare i Körning. Vi kan definiera Generics med fästen. Låt oss kolla in följande exempel.

Generics i en klass

använder systemnamn Edureka {class GenericClass {public GenericClass (T msg) {Console.WriteLine (msg)}} class Program {static void Main (string [] args) {GenericClass gen = new GenericClass ('This message is from generic class' ) GenericClass genI = new GenericClass (123) GenericClass getCh = new GenericClass ('E')}}

//Produktion:

Detta meddelande kommer från generisk klass
123
ÄR

Generics i en metod

använder systemnamnutrymme 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 meddelandet är från den generiska metoden ') genC.Show (321) genC.Show (' H ')}}}

//Produktion:

Detta meddelande kommer från den generiska metoden
321
H

Delegater

De Delegera fungerar som en referens till metoden. I grund och botten är det samma som en funktionspekare i C och C ++ men mycket bättre och typsäker. Delegaten i statisk metod inkapslar endast metoden. Medan delegaten i exempel metoden inkapslar både metod och instans. Den bästa användningen av delegaten är att använda som en händelse.

Exempel:

använder systemdelegat int Kalkylator (int n) offentlig klass Edureka {statisk int nummer = 25 offentlig statisk int ad (int n) {nummer = nummer + n returnummer} offentlig statisk int mul (int n) {nummer = nummer * n retur antal} offentlig statisk int getNumber () {returnummer} offentlig statisk tomrum Huvud (sträng [] args) {Kalkylator c1 = ny kalkylator (lägg till) Kalkylator c2 = ny kalkylator (mul) c1 (20) Console.WriteLine ('After calculator en delegat, det nya numret är: '+ getNumber ()) c2 (3) Console.WriteLine (' Efter miniräknare två delegater är det nya numret: '+ getNumber ())}}

//Produktion:

filhantering i java exempel

Efter räknaren en delegat är det nya numret: 45
Efter miniräknare två delegerade är det nya numret: 135

Reflexion

Reflektionen krävs för att få metadata i körtid. Referensen finns i System Reflektion namnområde. Det krävs att följande klasser körs.

  • Typ
  • MemberInfo
  • ConstructorInfo
  • MethodInfo
  • FieldInfo
  • PropertyInfo
  • TypeInfo
  • EventInfo
  • Modul
  • hopsättning
  • AssemblyName
  • Pekare

Typklass

C # Typklass representerar typdeklarationer för klasstyper, gränssnittstyper, uppräkningstyper, arraytyper, värdetyper

Skriv Egenskaper

En lista över viktiga egenskaper för typklasser nämns nedan.

Fast egendom Beskrivning
hopsättning Får församlingen för den här typen.
AssemblyQualifiedName Får församlingens kvalificerade namn för denna typ.
Attribut Hämtar de attribut som är associerade med typen.
Bastyp Hämtar bas- eller överordnad typ.
Fullständiga namn Får det fullständigt kvalificerade namnet på typen.
Är abstrakt används för att kontrollera om typen är abstrakt.
IsArray används för att kontrollera om typen är Array.
IsClass används för att kontrollera om typen är klass.
IsEnum används för att kontrollera om typen är Enum.
IsInterface används för att kontrollera om typen är gränssnitt.
Isnested används för att kontrollera om typen är kapslad.
Är primitiv används för att kontrollera om typen är primitiv.
IsPointer används för att kontrollera om typen är pekare.
IsNotPublic används för att kontrollera om typen inte är offentlig.
IsPublic används för att kontrollera om typen är offentlig.
IsSealed används för att kontrollera om typen är förseglad.
Kan Serialiseras används för att kontrollera om typen är Serializable.
MemberType används för att kontrollera om typen är medlemstyp av kapslad typ.
Modul Hämtar modulen av typen.
namn Får namnet på typen.
Namnområde Hämtar namnområdet för typen.
Fast egendom Beskrivning
GetConstructors () Returnerar alla offentliga konstruktörer för typen.
GetConstructors (BindingFlags) Returnerar alla konstruktörer för typen med angivna bindningsflagg.
GetFields () Returnerar alla offentliga fält för typen.
GetFields (BindingFlags) Returnerar alla offentliga konstruktörer för typen med specificerade BindingFlags.
GetMembers () Returnerar alla offentliga medlemmar för typen.
GetMembers (BindingFlags) Returnerar alla medlemmar för typen med angivna BindingFlags.
GetMethods () Returnerar alla offentliga metoder för typen.
GetMethods (BindingFlags) Returnerar alla metoder för typen med angivna BindingFlags.
GetProperties () Returnerar alla offentliga egenskaper för typen.
GetProperties (BindingFlags) Returnerar alla egenskaper för typen med angivna BindingFlags.
GetType () Hämtar aktuell typ.
GetType (sträng) Hämtar typen för det angivna namnet.

Reflektionsexempel:

Skaffa typ

Exempel:

med System offentlig klass GetType {public static void Main () {int a = 10 Type type = a.GetType () Console.WriteLine (type)}}

//Produktion:

System.Int32

Få montering

Exempel:

använder System med System.Reflection public class 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 utskriftstyp

Exempel:

använder System med 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:

Sann
Falsk
Falsk

Skriv ut konstruktörer

Exempel:

använder System med System.Reflection public class 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)}}}

//Produktion:

Systemkonstruktörer av strängtyp ...
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

Exempel:

använder System med 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)}}}

//Produktion:

Metoder för System.Strängtyp ...
System.String Ersätt (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 fält

Exempel:

använder System med 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)}}}

//Produktion:

Fält för system. Strängtyp ...
System. Sträng tom

Låt oss gå vidare till några avancerade C # programmeringskoncept

Avancerade C # -koncept

Anonym funktion

Funktionen som saknar ett specifikt namn kallas Anonym Funktioner. Det finns två typer av anonyma funktioner tillgängliga i C #

  • Lambda-uttryck
  • Anonyma metoder

Exempel:

med hjälp av systemnamnrymden 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:

Kvadrat: 625

Anonyma metoder

De anonym metod ger samma funktionalitet som en lambdauttryck, förutom att det tillåter oss att ignorera parameterlistan.

Exempel:

använder systemnamnområde AnonymousMethods {class Program {public delegate void AnonymousFun () static void Main (string [] args) {AnonymousFun fun = delegate () {Console.WriteLine ('This is anonymous function')} fun ()}}}

//Produktion:

Detta är anonym funktion

Flertrådning

Multithreading är en process där flera trådar skapas och tilldelas för olika uppgifter. Detta sparar tid genom att utföra flera jobb åt gången. Multithreading-klassen finns i System. Gängning namnområde.

System.Trådning av namnutrymme

De System. Gängning namespace innehåller klasser och gränssnitt för att underlätta multithreading. Det ger klasser för att synkronisera trådresursen. En lista över vanliga klasser ges nedan:

  • Tråd
  • Mutex
  • Timer
  • Övervaka
  • Semafor
  • Trådlokal
  • ThreadPool
  • Flyktig

Process och tråd

Processen är faktiskt och Ansökan och det anses vara ett tungvikt komponent. Å andra sidan är tråden en enda modul av hela ansökan. Det är lättviktig jämfört med processen

Trådens livscykel

Varje tråd har en livscykel. Trådens livscykel definieras i System.Threading.Thread-klassen. Följande är stegen i livscykeln för vilken tråd som helst.

  • Ostartad
  • Körbar (redo att springa)
  • Löpning
  • Inte körbar
  • Död

Trådklassen ger följande egenskaper och metoder enligt följande.

Trådegenskaper

Fast egendom Beskrivning
CurrentThread returnerar förekomsten av den aktuella tråden.
Lever kontrollerar om den aktuella tråden lever eller inte.
IsBackground Att få / ställa in värdet för den aktuella tråden är i bakgrunden eller inte.
ManagedThreadId används för att få det unika id för den nuvarande hanterade tråden.
namn används för att hämta eller ställa in namnet på den aktuella tråden.
Prioritet används för att få eller ställa in prioriteten för den aktuella tråden.
ThreadState används för att returnera ett värde som representerar trådtillståndet.

Trådmetoder

Metod Beskrivning
Abort() används för att avsluta tråden. Det höjer ThreadAbortException.
Avbryta() används för att avbryta en tråd som är i WaitSleepJoin-tillstånd.
Ansluta sig() används för att blockera alla samtalstrådar tills den här tråden avslutas.
ResetAbort () används för att avbryta begäran om avbrott för den aktuella tråden.
Återuppta() används för att återuppta den upphängda tråden. Det är föråldrat.
Sleep (Int32) används för att avbryta den aktuella tråden under de angivna millisekunderna.
Start() ändrar trådens nuvarande tillstånd till Runnable.
Uppskjuta() avbryter den aktuella tråden om den inte är avstängd. Det är föråldrat.
Avkastning() används för att ge körningen av den aktuella tråden till en annan tråd.

Huvudtrådsexempel

använder System med System.Threading public class Edureka {public static void Main (string [] args) {Thread t = Thread.CurrentThread t.Name = 'MainThread' Console.WriteLine (t.Name)}}

//Produktion:

Huvudtråd

Undantagshantering

De undantag är ett fel som kastas av programmet under körningstiden. Vi utför Exception-Handling för att göra vårt program undantagsfritt.

Undantag Beskrivning
System.DivideByZeroException Fel genererat genom att dela ett tal med noll.
System.NullReferenceException hanterar felet som genereras genom att hänvisa till null-objektet.
System.InvalidCastException hanterar felet som genereras av ogiltig typprognosering.
System.IO.IO Undantag hanterar in- / utmatningsfelen.
System.FieldAccessException Fel genererat av ogiltig privat / skyddad åtkomst.

I C # använder vi fyra nyckelord för att utföra undantagshantering:

  • Prova
  • fånga
  • äntligen, och
  • kasta
Exempel:
använder 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 ('Detta meddelande kommer från fångstblock')}}

//Produktion:

System.DivideByZeroException: Försökte dela med noll.
vid ExExaEdurekample.Main (String [] args) i F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: line 10
Det här meddelandet kommer från fångsten

Anpassat undantagsexempel

använder System public class InvalidAgeException: Undantag {public InvalidAgeException (Strängmeddelande): bas (meddelande) {}} offentlig klass Anpassad {statisk ogiltig validering (int age) {if (age<18) { throw new InvalidAgeException('Sorry, Age is expected to be greater than 18') } } public static void Main(string[] args) { try { validate(12) } catch (InvalidAgeException e) { Console.WriteLine(e) } Console.WriteLine('Catch block is being executed now.') } } 

//Produktion:

InvalidAgeException: Tyvärr, ålder förväntas vara större än 18
vid 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
Fångstblocket körs nu.

Slutligen blockera exempel

använder System public class FinalExecption {public static void Main (string [] args) {try {int a = 10 int b = 0 int x = a / b} catch (Exception e) {Console.WriteLine (e)} slutligen {Console .WriteLine ('Slutligen blockeras exekveras')} Console.WriteLine ('Catch block is executed')}}

//Produktion:

System.DivideByZeroException: Försökte dela med noll.
vid FinalExecption.Main (String [] args) i F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: line 10
Slutligen körs blocket
Fångstblock körs

Undantag för systemundantag

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

Systemundantagsbyggare

Byggare Beskrivning
SystemException () Det används för att initialisera en ny instans av SystemException-klassen.
SystemException

(SerializationInfo, StreamingContext)

Den används för att initialisera en ny instans av SystemException-klassen med seriell data.
SystemException (String) Det används för att initialisera en ny instans av SystemException-klassen med ett angivet felmeddelande.
SystemException (sträng, undantag) Den används för att initiera en ny instans av SystemException-klassen med ett angivet felmeddelande och en hänvisning till det inre undantaget som är orsaken till detta undantag.

Egenskaper för systemundantag

Fast egendom Beskrivning
Data Den används för att få en samling nyckel / värdepar som ger ytterligare användardefinierad information om undantaget.
HelpLink Den används för att hämta eller ställa in en länk till hjälpfilen som är associerad med detta undantag.
HResult Den används för att hämta eller ställa in HRESULT, ett kodat numeriskt värde som tilldelas ett specifikt undantag.
Inre undantag Det används för att få undantagsinstansen som orsakade det aktuella undantaget.
Meddelande Det används för att få ett meddelande som beskriver det aktuella undantaget.
Källa Den används för att hämta eller ställa in namnet på applikationen som orsakar felet.
StackTrace Den används för att få en strängrepresentation av de omedelbara ramarna på samtalsstacken.
TargetSite Den används för att få metoden som ger det aktuella undantaget.

Systemundantagsmetoder

Metoder Beskrivning
Lika (objekt) Den används för att kontrollera att det angivna objektet är lika med det aktuella objektet eller inte.
Avsluta() Den används för att frigöra resurser och utföra saneringsåtgärder.
GetBaseException () Det används för att få rotundantag.
GetHashCode () Den används för att få hash-koden.
GetObjectData

(SerializationInfo, StreamingContext)

Den används för att få objektdata.
GetType () Det används för att hämta runtime-typen för den aktuella instansen.
MemberwiseClone () Den används för att skapa en grunt kopia av det aktuella objektet.
Att stränga() Den används för att skapa och returnera en strängrepresentation av det aktuella undantaget.

Exempel på systemundantag

med systemnamnsutrymme 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: Indexet låg utanför arrayens gränser.
vid CSharpProgram.SystemExceptionExample.Main (String [] args) i F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: rad 11

Synkronisering

Synkronisering kan vara en teknik som gör att endast en tråd kan komma åt resursen under en viss tid. Ingen alternativ tråd kommer att avbrytas förrän den utsedda tråden är klar.

I flertrådningsprogram är trådar tillåtnaför att komma åt valfri resurs förspecificerad utförandetid. Trådar delar resurser och kör asynkront. Åtkomst till delade resurser (data)kan vara en viktig uppgiftdet i allmänhetkunde stoppasystemet.vi har en tendens att påverka detgenom att skapa trådar på ett synkront sätt.

Exempel utan synkronisering

använder System med System.Threading class 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:

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

Exempel med synkronisering

använder System med System.Threading class 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:

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

Nya egenskaper

Microsoft har lagt till många senaste funktioner i C # -språket, några av dem nämns nedan.

C # 6.0

  • Använda statiska direktiv
  • Undantagsfilter
  • Vänta i fångst / slutligen block
  • Initierare för automatisk fastighet
  • Standardvärden för endast getter-egenskaper
  • Medlemmar som är uttrycksfyllda
  • Null propagator
  • Stränginterpolation
  • Namn på operatör
  • Ordbokens initialiserare
  • Compiler-as-a-service (Roslyn)

C # 7.0

  • Mönstermatchning
  • Tuples
  • Dekonstruktion
  • Lokala funktioner
  • Sifferavskiljare
  • Binära bokstäver
  • Ref återvänder och lokalbefolkningen
  • Konstruktions- och slutbehandlingsanordningar för uttryck
  • Uttrycksgivare och setter
  • Ut variabler
  • Generaliserade async-returtyper

C # 7.1

  • Async huvud
  • Standarduttryck

Intervjufrågor baserade på C #

De viktiga intervjuerna Frågor baserade på C # Programming Language finns i denna uppdaterade .

Med detta kommer vi till ett slut på den här 'C # Tutorial' -artikeln. Jag hoppas att du har förstått vikten av datastrukturer, syntax, funktionalitet och operationer som utförs med dem. Nu när du har förstått grunderna för programmering i C # genom dettaC # Handledning, kolla in utbildning som tillhandahålls av Edureka på många tekniker som Java, Vår och mångamer fick ett betrodd online-lärande företag med ett nätverk av mer än 250 000 nöjda elever spridda över hela världen fråga för oss? Nämn det i kommentarsektionen i den här 'C # Tutorial' -bloggen så kommer vi tillbaka så snart som möjligt.