C # Tutorial: de basisprincipes die je nodig hebt om C # onder de knie te krijgen



Dit artikel over C # Tutorial zal je helpen met gedetailleerde kennis over C # fundementals, samen met real-time voorbeelden voor een beter begrip.

C # is voor alle doeleinden en de robuuste programmeertaal ontwikkeld door Microsoft Corporation in het jaar 2000 als een dodelijke concurrent van Java. Het is het populairst en een dominante programmeertaal als het gaat om zowel webontwikkeling als ontwikkeling van desktoptoepassingen.

In deze C # Tutorial leren we de volgende concepten.





C # Basics

Inleiding tot programmeertaal C #

In de vroege jaren 90 was Java de toonaangevende programmeertaal voor webontwikkeling, ontwikkeling van desktoptoepassingen en vele andere gebieden. Microsoft wilde een concurrent bedenken met veel geavanceerde functies die Java ver achter zich kunnen laten.



C#-Tutorial-hejlsberg_bio

Het was in het jaar 2000, Anders Hejlsberg en zijn Microsoft-team kwamen op het idee van C #, in de volksmond C-Sharp genoemd. Dit initiatief is goedgekeurd door de International Standards Organization (GROOT) en de European Computer Manufacturers Association (ECMA). en tot slot betreedt The C # de wereld van softwareontwikkeling.

Kenmerken van C # programmeertaal



  • Objectgeoriënteerde programmeertaal

Objectgeoriënteerde programmeerbenadering maakt C # sharp tot de meest programmeurvriendelijke en gemakkelijk te ontwikkelen en onderhouden programmeertaal.

  • Type-veilige taal

De betekenis van Type-Safe is dat de compiler alleen toegang krijgt tot de geheugenlocatie die toestemming heeft om uit te voeren. Deze functie verbetert de codeveiligheid tot een exponentieel niveau.

  • Interoperabiliteit

De functie van interoperabiliteit maakt C # capabel genoeg om alles wat eigen is aan C ++ op een efficiëntere manier te doen die beter kan presteren dan C ++ zelf.

  • Rijke bibliotheek

C # biedt toegang tot meerdere aantallen ingebouwde bibliotheken die voorgeprogrammeerde functionaliteiten bieden om de tijd die in het ontwikkelingsproces wordt besteed te verminderen.

  • Schaalbaar en updatebaar

C # is ontworpen om superieur te zijn tussen de andere programmeertalen. Daarom staat het altijd open voor updates en blijft het zichzelf zeer schaalbaar met zijn functies.

  • Component georiënteerd

De ontwikkelaars bij Microsoft gebruikten de componentgebaseerde benadering om C # te ontwikkelen. Dit is de meest overheersende ontwikkelingsmethodologie om C # zeer schaalbaar en up-to-date te houden.

  • Gestructureerde taal

De gestructureerde programmeringsaanpak heeft de voorkeur tijdens de levenscyclus van softwareontwikkeling, aangezien het gemakkelijker wordt om de software te ontwikkelen, compileren en te implementeren in vergelijking met de procedure-georiënteerde programmeerbenadering.

  • Snel

C # Programmeren is toevallig sneller bij het compileren en uitvoeren in vergelijking met C ++ en andere programmeertalen.

Installatie

Het is bewezen dat Microsoft Visual Studio is de beste editor voor C # -programmering. We zullen Microsoft Visual Studio installeren en instellen voor het uitvoeren van onze C # -programma's door de onderstaande stappen te volgen:

Stap 1 : Download Microsoft Visual Studio

Google voor de nieuwste versie van Visual Studio en download het installeren bestand naar uw lokale systeem en vervolgens rennen het installatiebestand als een beheerder.

Stap 2: Selecteer het .NET Desktop Development Package

Nadat u het installatieprogramma hebt uitgevoerd, wordt de Visual Studio Editor met succes gedownload naar uw lokale systeem.Later wordt een dialoogvenster op uw bureaublad weergegeven waarin de vijand wordt gevraagd om een bepaald pakket je nodig hebt in je systeem. Hier moet u het .NET Desktop-ontwikkeling pakket.

Stap 3: Stel C # -omgeving in

Zodra uw pakketten voor .NET-ontwikkeling worden gedownload, waarna een ander dialoogvenster op uw scherm wordt weergegeven waarin wordt gevraagd naar de ontwikkelomgeving die u zoekt. Hier moet je selecteer de omgeving voor C #.

Stap 4: Maak uw eerste project

Zodra de omgeving is ingesteld, bent u helemaal klaar om te gaan. Start uw Visual Studio en selecteer maak een nieuw project optie in het weergegeven dialoogvenster.

U wordt doorgestuurd naar het volgende dialoogvenster en daar moet u Klassebibliotheek als selecteren .NET-standaard zoals hieronder weergegeven.

In het volgende dialoogvenster wordt u hierom gevraagd Configureer uw project . Configureer het en je bent nu in de Editor. Schrijf je eerste programma en rennen het. De uitvoer wordt met succes weergegeven op het Opdrachtprompt.

met behulp van systeemklasse Edureka {static void Main (string [] args) {Console.WriteLine ('Welcome to Edureka !, Happy Learning ..!')}}

// Uitvoer:

Laten we ons eerste C # -programma uitvoeren.

C # Programmastructuur

Nu we ons eerste C # -programma hebben uitgevoerd, kunnen we de structuur in detail begrijpen. Een eenvoudig C # -programma heeft de volgende onderdelen.

met systeemnaamruimte ConsoleApplication1 {public class Edureka {public static void Main (string [] args) {Console.WriteLine ('Welcome to Edureka !, Happy Learning ..!')}}}

// Uitvoer:

Welkom bij Edureka !, Happy Learning ..!

  • klasse: klasse kan in het algemeen worden gedefinieerd als een trefwoord dat wordt gebruikt om een ​​klasse in het C # -programma te definiëren.
  • Edureka: Het is de naam van de Klasse. Klasse wordt vaak beschouwd als een blauwdruk waarin de leden en methoden met betrekking tot de klas worden opgeslagen.
  • Hoofd: In feite is het primaire methode van het hele C # -programma, het fungeert als de gateway voor de besturing om het programma binnen te gaan. Het wordt uitgevoerd voordat een andere methode van het programma wordt uitgevoerd.
  • ongeldig: Dit segment van de code wordt aangeduid met de retourtype van de methode. Het kan elk Datatype zijn, behalve ongeldig. Ongeldig betekent dat er geen gegevens van de methode worden geretourneerd.
  • statisch: Dit is een trefwoord die zegt dat de gedeclareerde data-leden statisch zijn en dat een speciaal geheugen is toegewezen aan de gedeclareerde leden.
  • String [] args: Het lijkt op de opdrachtregelargumenten die we in ons programma gebruiken. Terwijl we ons programma uitvoeren, slagen we er in feite voor wat argumenten, die vanwege deze verklaring door het programma worden geaccepteerd.
  • System.Console.WriteLine ('Welkom bij Edureka !, Happy Learning ..!') Hier, Systeem is de naamruimte. De consoleis dat de categorie geschetstin systeemnaamruimte. De Schrijf lijn() is dat destatischtechniekvan Consolecategorie die wordt gebruikt om op te schrijvende tekst op de console.

Laten we nu eens kijken naar de datatypes die beschikbaar zijn in C #.

Datatypes

De datatypes in C # zijn onderverdeeld in drie categorieën en worden hieronder beschreven.

Waarde datatypes

De Waarde datatypes bevinden zich in de System.ValueType Bibliotheek en zijn altijd klaar voor directe toegang en variabelen kunnen direct aan een bepaalde waarde worden toegewezen. De waardegegevenstypen worden verder onderverdeeld in twee typen, zoals hieronder weergegeven:

  • Vooraf gedefinieerde datatypes
  • Door de gebruiker gedefinieerde datatypes

Voorgedefinieerde datatypes: Dit zijn degenen die we normaal gesproken gebruiken in onze dagelijkse programmering. Deze Datatypes zijn voorgedefinieerd door de taalontwikkelaars en worden klaar gehouden voor gebruik door de programmeurs.

Voorbeeld:

int, float, char, short double, enz

Door de gebruiker gedefinieerde datatypes: Er zijn situaties waarin we mogelijk verschillende waarden van datatypes in één enkele variabele moeten opslaan. In deze gevallen is het Vooraf gedefinieerde datatypes zijn niet alleen genoeg. Gebruiker gedefinieerde Datatypes zijn als aanpasbare datatypes voor de gebruiker.

Voorbeeld: structuur, Enum

Data type Bereik van het toegewezen geheugen Geheugen grootte
ondertekende char -128 tot 127 1 byte
Ongetekend char 0 tot 127 1 byte
char -128 tot 127 1 byte
kort getekend -32.768 tot 32.767 2 bytes
ongetekend kort 0 tot 65.535 2 bytes
kort -32.768 tot 32.767 2 bytes
ondertekend int -2.147.483.648 tot -2.147.483.647 4 bytes
unsigned int 0 tot 4.294.967.295 4 bytes
int -2.147.483.648 tot -2.147.483.647 4 bytes
lang getekend -9.223.372.036.854.775.808 tot 9.223.372.036.854.775.807 8 bytes
lang ongetekend 0 tot 18.446.744.073.709.551.615 8 bytes
lang -9.223.372.036.854.775.808 tot 9.223.372.036.854.775.807 8 bytes
vlotter 1.5 * 10-45 - 3.4 * 1038, (7-cijferige precisie) 4 bytes
dubbele 5,0 * 10-324 - 1,7 * 10308, (precisie van 15 cijfers) 8 bytes
decimale -7,9 * 10-28 - 7,9 * 1028, (28-cijferige precisie) 16 bytes


Aanwijzer Datatype

Pointer Type is een eenvoudig datatype. De functionaliteit is volledig vergelijkbaar met de Pointers in C. Ze zijn ontworpen om het adres van een andere aanwijzer op te slaan.

zweven * ptr

Referentie datatypes

De naam spreekt voor zich. De Referentie datatypes slaan de variabelen in feite niet op, maar slaan de referentiewaarde op naar die specifieke variabele. Met andere woorden, ze slaan het adres van de feitelijke variabele op.

De referentievariabelen zijn onderverdeeld in drie verschillende typen, zoals hieronder vermeld:

  • Object type

Het Object Datatype is beschikbaar in het System.Object Klasse.Het objecttypeskan zijntoegewezen aan dewaarden vande andere soorten,referentietypes, voorgedefinieerd, door de gebruiker gedefinieerdtypes. Maar voorheenopdrachtwaarden, het vereist type conversie.

object abc abc = 50 // dit wordt boksen genoemd
  • Dynamisch type

Dynamische typevariabelen zijn ontworpen om bijna alle soorten waarden op te slaan. Het wordt Dynamic Type genoemd omdat de typecontrole van waarden in runtime plaatsvindt

dynamische x = 10
  • Tekenreeks

Het String Type is beschikbaar in System.String klasse. Het String Type is ontworpen om letterlijke tekenreeksen op te slaan. De String Literals worden in twee vormen opgeslagen intwee vormen

    • geciteerd
    • @ geciteerd.
String S = 'Edureka'
  • De @ geciteerd tekenreeks ziet er letterlijk uit
@ 'Edureka'

Laten we nu de variabelen begrijpen.

Variabelen

Variabelen zijn de namen die zijn toegewezen aan de geheugenlocatie die bepaalde gegevens opslaan die door de gebruiker zijn opgegeven en die gegevens gemakkelijk toegankelijk zijn door de naam van de variabele te gebruiken. Er zijn vijf soorten variabelen beschikbaar in C #

Type Voorbeeld
Nul Null-gegevens
Boolean Goed en fout
Geheel getal Int, Char, Byte, Short, Long
Vlotter Float en Double
Decimale Decimale

Voorbeeld:

int a, b dubbel x float p char abc

Regels die moeten worden gevolgd om variabelen in C # te declareren

  • Een variabele kan letters, cijfers en onderstrepingstekens bevatten.
  • Een variabelenaam kan alleen beginnen met een alfabet of een onderstrepingsteken.
  • Variabelen mogen niet beginnen met een cijfer of een speciaal teken.
  • Spaties tussen de variabelenaam zijn niet toegestaan.
  • Gereserveerde trefwoorden mogen niet worden gebruikt als variabelenamen.

Operatoren

Een operator kan worden gedefinieerd als een speciaal symbool dat uitlegt dat de computer een bepaalde wiskundige handeling moet uitvoeren op een reeks variabelen. C # bevat een verscheidenheid aan operators die hieronder worden vermeld.

  • Rekenkundige operatoren
  • Relationele operators
  • Logische operators
  • Bitwise-operators
  • Toewijzingsoperatoren

Rekenkundige operatoren

Operator Voorbeeld Omschrijving
+ A + B Voegt twee operanden toe
- A - B Trekt twee operanden af
* A * B Veelvouden twee operanden
/ A / B Verdeelt twee operanden
% A% B De rest van twee operanden
++ A ++ Verhogende bewerking
- NAAR- Verlagingsbewerking

Relationele operators

Operator Voorbeeld Omschrijving
== A == B Waar, als beide operanden gelijk zijn, is Else False
! = A! = B Toegegeven, als beide operanden niet gelijk zijn, Else False
> A> B Waar, als A groter is, anders niet waar
< NAAR Waar, als B groter is, anders niet waar
> = A> = B Waar, als A groter of gelijk is, is Else False
<= NAAR<= B Toegegeven, id B is groter gelijk, anders niet waar

Logische operators

Operator Voorbeeld Omschrijving
&& A && B Klopt, als beide operanden waar zijn, is Else False
|| A || B. Toegegeven, als een van de operanden waar is, Else False
! EEN ! B. Keert de logische toestand van de operand om

Bitwise-operators

NAAR B A & B A | B. A ^ B
een een een een 0
een 0 0 een een
0 een 0 een een
0 0 0 0 0
Operator Voorbeeld Omschrijving
~ (~ A) De complementoperator van Binary One is unair en heeft het effect van ‘flipping’ bits.
<< NAAR<<2 Binaire Linker Shift-operator. De waarde van de linkeroperand wordt naar links verplaatst met het aantal bits dat is opgegeven door de rechteroperand.
>> A >> 2 Binaire rechterschuivingsoperator. De waarde van de linkeroperand wordt naar rechts verplaatst met het aantal bits dat is opgegeven door de rechteroperand.

Toewijzingsoperatoren

Operator Voorbeeld Omschrijving
= A = B + C A = B + C, B + C wordt toegewezen aan A
+ = A + = B A = A + B, A + B is toegewezen aan A
- = A - = B A = A-B, A-B wordt toegewezen aan A
* = A - = B A = A * B, A * B is toegewezen aan A
/ = A / = B A = A / B, A / B is toegewezen aan A
% = A% = B A = A% B, A% B wordt toegewezen aan A
<<= NAAR<<= 2 Linker Shift- en toewijzingsoperator
>> = A >> = 2 Rechtshift- en toewijzingsoperator
& = A & = 2 Bitwise en toewijzingsoperator
^ = A ^ = 2 Bitwise Exclusief en toewijzingsoperator
| = A! = 2 Bitwise-inclusieve en toewijzingsoperator

Loops

NAAR lus instructie wordt gebruikt voor het herhaaldelijk uitvoeren van een blok instructies totdat aan een bepaalde voorwaarde is voldaan. De C # -taal bestaat uit de volgende lusverklaringen.

  • For loop
  • Herhalingslus
  • Doe While Loop

For loop

De for loop wordt gebruikt om een ​​bepaald codesegment meerdere keren uit te voeren totdat aan de gegeven voorwaarde is voldaan.

Syntaxis

for (initialisatie conditie verhogen / verlagen) {// codesegment}

Stroomdiagram:

Voorbeeld:

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

// Uitvoer:

een
2
3
4
5

Herhalingslus

De Herhalingslus wordt gebruikt om een ​​codesegment meerdere keren uit te voeren totdat aan een specifieke voorwaarde is voldaan.

Syntaxis

while (voorwaarde) {// code die moet worden uitgevoerd}

Stroomdiagram:

Voorbeeld:

met Systeemnaamruimte 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() } } } 

// Uitvoer:

De waarde van a: 5
De waarde van a: 6
De waarde van a: 7
De waarde van a: 8
De waarde van a: 9
De waarde van a: 10

Doe While Loop

De while-lus lijkt volledig op de While-lus, maar het enige verschil is dat de voorwaarde aan het einde van de lus wordt geplaatst. Daarom wordt de lus minstens één keer uitgevoerd.

Syntaxis

do {// code die moet worden uitgevoerd} while (voorwaarde)

Stroomdiagram:

Voorbeeld:

met systeemnaamruimte 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 ++} terwijl (i<= 10) } } } 

// Uitvoer:

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

Voorwaardelijk

Voorwaardelijke stellingen worden gebruikt om uit te voeren uitspraak of een groep van verklaringen gebaseerd op een bepaalde voorwaarde. Als het staat is dan waar C # -instructies worden uitgevoerd anders de volgende uitspraak zal worden uitgevoerd.

De verschillende soorten voorwaardelijke verklaringen in C ++ - taal zijn als volgt:

  1. Als statement
  2. If-Else-verklaring
  3. Geneste If-else-instructie
  4. If-Else If ladder
  5. Schakel statement

Als statement

De single als instructie in C # -taal wordt gebruikt om de code uit te voeren als een voorwaarde waar is. Het wordt ook een eenrichtingsselectieverklaring genoemd.

Syntaxis

if (boolean-expression) {// statements uitgevoerd als boolean-expression waar is}

Stroomdiagram:

Voorbeeld:

met Systeemnaamruimte Voorwaardelijk {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.') } } } 

// Uitvoer:

2 is minder dan 5
Deze verklaring wordt altijd uitgevoerd.

If-Else-verklaring

De als-anders instructie in C-taal wordt gebruikt om de code uit te voeren als de voorwaarde waar of onwaar is. Het wordt ook een tweewegselectieverklaring genoemd.

Syntaxis

if (boolean-expression) {// statements uitgevoerd if boolean-expression is true} else {// statements uitgevoerd als boolean-expression onwaar is}

Stroomdiagram:

Voorbeeld:

met Systeemnaamruimte Voorwaardelijk {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.') } } } 

// Uitvoer:

12 is groter dan of gelijk aan 5
Deze verklaring wordt altijd uitgevoerd.

Geneste If-else-instructie

Het geneste als-anders instructie wordt gebruikt wanneer een programma meer dan één testuitdrukking vereist. Het wordt ook wel een meervoudige selectie-instructie genoemd. Wanneer een reeks van de beslissing in een verklaring is betrokken, gebruiken we als-anders verklaring in geneste vorm.

Syntaxis

if (boolean-expression) {if (geneste-expressie-1) {// code die moet worden uitgevoerd} else {// code die moet worden uitgevoerd}} else {if (geneste-expressie-2) {// code moet worden uitgevoerd } else {// uit te voeren code}}

Stroomdiagram:

Voorbeeld:

systeemnaamruimte gebruiken Voorwaardelijk {class genest {public static void Main (string [] args) {int first = 7, second = -23, third = 13 if (first & gt second) {if (first

// Uitvoer:

13 is de grootste

Else-if Ladder

De als-anders-als instructie wordt gebruikt om één code uit meerdere condities uit te voeren. Het wordt ook wel multipath decision statement genoemd. Het is een ketting van if..else statements waarin elke if statement is geassocieerd met else if statement en last zou een else statement zijn.

Syntaxis

if (voorwaarde1) {// code die moet worden uitgevoerd als voorwaarde1 waar is} else if (voorwaarde2) {// code die moet worden uitgevoerd als voorwaarde2 waar is} anders if (voorwaarde3) {// code die moet worden uitgevoerd als voorwaarde3 waar is} ... else {// code die moet worden uitgevoerd als alle voorwaarden onwaar zijn}

Stroomdiagram:

Voorbeeld:

met behulp van systeemklasse Edureka {public static void Main (String [] args) {int i = 20 if (i == 10) Console.WriteLine ('i is 10') else if (i == 15) Console.WriteLine (' i is 15 ') else if (i == 20) Console.WriteLine (' i is 20 ') else Console.WriteLine (' i is not present ')}}

// Uitvoer:

ik ben 20

Schakel statement

Schakelaar statement fungeert als vervanging voor een lange if-else-if-ladder die wordt gebruikt om een ​​lijst met cases te testen. Een switch-instructie bevat een of meer case-labels die worden getoetst aan de switch-expressie. Wanneer de uitdrukking overeenkomt met een casus, worden de bijbehorende instructies met die casus uitgevoerd.

Syntaxis

switch (variabele / uitdrukking) {case waarde1: // Verklaringen uitgevoerd als uitdrukking (of variabele) = waarde1 break case waarde2: // Verklaringen uitgevoerd als uitdrukking (of variabele) = waarde1 breken ... ... ... .. . ... ... default: // Verklaringen uitgevoerd als er geen hoofdlettergebruik overeenkomt}

Stroomdiagram:

Voorbeeld:

systeemnaamruimte gebruiken Voorwaardelijk {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 standaard: Console.WriteLine ('Not a vowel') break}}}}

// Uitvoer:

Voer een alfabet in
is
Klinker

Snaren

Draad Datatype is een lid van System.String Klasse. Het is in staat om karaktertype gegevens op te slaan. We kunnen verschillende bewerkingen op Stings uitvoeren, zoalsaaneenschakeling, vergelijking, subtekenreeks ophalen, zoeken, bijsnijden, vervangen en nog veel meer.

De analogie van String en string

In C # Draad en draad zijn gelijkwaardig. De woordstring is een trefwoord en fungeert als de System.String klasse. We kunnen elk van de versies gebruiken om strings te declareren.

Syntaxis:

string s1 = 'Edureka' // string aanmaken met string trefwoord String s2 = 'Happy Learning' // string maken met String class

Voorbeeld:

met 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 '} string s2 = nieuwe string (ch) Console.WriteLine ( s1) Console.WriteLine (s2)}}

// Uitvoer:

Edureka
Csharp-zelfstudie

String-methoden in C #

Methode Omschrijving
Kloon () Wordt gebruikt om een ​​verwijzing naar dit exemplaar van String te retourneren.
Compare (String, String) Wordt gebruikt om twee opgegeven String-objecten te vergelijken.
Concat (String, String) Voeg twee opgegeven exemplaren van String samen.
Bevat (String) Retourneer een waarde die een opgegeven subtekenreeks aangeeft
Kopiëren (String) Wordt gebruikt om een ​​nieuw exemplaar van String met dezelfde waarde te maken
CopyTo (Int, Char [], Int, Int) Kopieert tekens van een opgegeven positie
Is gelijk aan (tekenreeks, tekenreeks) Bepaalt dat twee String-objecten dezelfde waarde hebben.
Formaat (tekenreeks, object) Vervang een of meer opmaakitems in een opgegeven tekenreeks
IndexOf (tekenreeks) Rapporteert de op nul gebaseerde index van het eerste voorval
Invoegen (Int32, String) Retourneert een nieuwe string waarin een string wordt ingevoegd bij een index.
IsInterned (tekenreeks) Geeft aan dat deze tekenreeks de vorm C heeft van Unicode-normalisatie.
IsNullOrEmpty (tekenreeks) Geeft aan dat de opgegeven tekenreeks null of een lege tekenreeks is.
IsNullOrWhiteSpace (tekenreeks) Wordt gebruikt om aan te geven of een opgegeven tekenreeks null, leeg,
Join (String, String []) Wordt gebruikt om alle elementen van een string-array samen te voegen
LastIndexOf (Char) Rapporteert de op nul gebaseerde indexpositie van het laatste teken
LastIndexOfAny (Char []) Rapporteert de op nul gebaseerde indexpositie van het laatste teken
Verwijderen (Int32) Retourneert een nieuwe tekenreeks waarin alle tekens
Vervangen (String, String) Retourneert een nieuwe tekenreeks waarin alle exemplaren van een tekenreeks voorkomen
Splitsen (Char []) Het wordt gebruikt om een ​​string in substrings te splitsen
StartsWith (tekenreeks) Het wordt gebruikt om te controleren of het begin van deze string
Substring (Int32) Het wordt gebruikt om een ​​subtekenreeks uit deze instantie op te halen.
ToCharArray () Kopieert de tekens in dit geval naar een Unicode-array.
ToString () Het wordt gebruikt om de instantie van String te retourneren.
Trimmen () Knipt de draad af


Arrays

Net als bij andere programmeertalen, heeft C # arrays. Arrays zijn de eenvoudige datastructuren die zijn ontworpen om hetzelfde datatype van elementen op een aangrenzende geheugenlocatie op te slaan.

C # ondersteunt de volgende Array-typen.

  • Eendimensionale matrix
  • Multidimensionale array
  • Gekartelde matrix

Eendimensionale matrix

Single Dimensional Array slaat elementen op in de vorm van één enkele rij.

Syntaxis

int [] arr = new int [5] // array aanmaken

Voorbeeld:

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

// Uitvoer:

10
twintig
30
40
vijftig

Multidimensionale array

Multidimensionale Array slaat elementen op in de vorm van meerdere dimensies zoals een matrix en een kubus enz.

Syntaxis

int val = a [2,3]

Voorbeeld:

met systeemnaamruimte 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 voor (i = 0 i<5 i++) { for (j = 0 j < 2 j++) { Console.WriteLine('a[{0},{1}] = {2}', i, j, a[i, j]) } } Console.ReadKey() } } } 

// Uitvoer:

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

Gekartelde matrix

Jagged Array is gewoon een reeks arrays.

Voorbeeld:

met Systeemnaamruimte ArrayApplication {class MyArray {static void Main (string [] args) {int [] [] a = new int [] [] {new int [] {0,0}, new int [] {1,2 }, nieuwe int [] {2,4}, nieuwe int [] {3, 6}, nieuwe int [] {4, 8}} int i, j voor (i = 0 i<5 i++) { for (j = 0 j < 2 j++) { Console.WriteLine('a[{0}][{1}] = {2}', i, j, a[i][j]) } } Console.ReadKey() } } } 

// Uitvoer:

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

Collecties

Verzameling kan eenvoudig worden beschouwd als een groep objecten die bij elkaar zijn verzameld om een ​​aantal functies op de verzamelde gegevens toe te passen. De bewerkingen die ooit mogelijk op een collectie kunnen worden uitgevoerd, zijn,

  • winkel object
  • update object
  • verwijder object
  • ophalen object
  • zoekobject, en
  • sorteer object

Soorten collecties

Er zijn drie verschillende mogelijkheden om met collecties te werken. De drie naamruimten worden hieronder genoemd:

  • System.Collections.Generic klassen
  • System.Collections klassen
  • System.Collections.Concurrent klassen

De System.Collections.Generic-klasse heeft de volgende soorten klassen:

  • Lijst
  • Stapel
  • Wachtrij
  • LinkedList
  • HashSet
  • SortedSet
  • Woordenboek
  • SortedDictionary
  • SortedList

De System.Collections klassen worden beschouwd als oudere klassen. ze omvatten de volgende klassen.

  • ArrayList
  • Stapel
  • Wachtrij
  • Hashtable

De System.Collections.Concurrent klassennamespace biedt klassen voor thread-veilige bewerkingen. Nu zullen meerdere threads geen probleem vormen om toegang te krijgen tot de collectie-items. de lessen die hierin beschikbaar zijn, zijn,

  • BlockingCollection
  • ConcurrentBag
  • ConcurrentStack
  • ConcurrentQueue
  • ConcurrentDictionary
  • Partities
  • Partities
  • Bestelbaar Partitioner

Lijst

De lijst wordt beschouwd als een datastructuur die beschikbaar is in System.Collection.Generics naamruimte. Het kan elementen opslaan en ophalen. De lijst is in staat om dubbele elementen op te slaan.

Voorbeeld:

gebruikend Systeem met System.Collections.Generic openbare klasse Edureka {openbare statische leegte Main (string [] args) {var names = new List () names.Add ('Sandhya') names.Add ('Arun') names.Add ( 'Prashanth') names.Add ('Kiran') foreach (var name in names) {Console.WriteLine (name)}}}

// Uitvoer:

Sandhya
Arun
Prashanth
Kiran

Hash Set

C # HashSetcategorie is vaak gewendop te slaan,afhalenoflees componenten. Hetnietwinkel duplicaatcomponenten.het wordt aangespoordgebruiken HashSet categoriealsjij hebtopslaanalleen kenmerkend componenten . haar gevonden in System.Collections.Generic naamruimte.

Voorbeeld:

systeem gebruiken met System.Collections.Generic openbare klasse Edureka {openbare statische leegte Main (string [] args) {var namen = nieuwe HashSet () namen.Add ('Sunil') namen.Add ('Amar') namen.Add ( 'Pujari') names.Add ('Imran') names.Add ('karan') foreach (var name in names) {Console.WriteLine (name)}}}

// Uitvoer:

Sunil
Amar
Pujari
Imran
karan

Gesorteerde set

C # SortedSetklasse zijn vaak gewendop te slaan, verwijderen of lezen elementen . Het handhaaft oplopende volgorde ennietwinkel duplicaatelementen.het is promptom SortedSet te gebruikencategoriealsjij hebtopslaan kenmerkend componenten en handhaaf oplopende volgorde.haargevonden in System.Collections.Generic naamruimte.

Voorbeeld:

systeem gebruiken met System.Collections.Generic openbare klasse Edureka {openbare statische leegte Main (string [] args) {var namen = nieuwe SortedSet () namen.Add ('Sanjay') namen.Add ('Anuradha') namen.Add ( 'Praveen') names.Add ('Ravi') names.Add ('Kajol') foreach (var name in names) {Console.WriteLine (name)}}}

// Uitvoer:

Anuradha
Kajol
Praveen
Ravi
Sanjay

Stapel

De stapel is een eenvoudige verzameling die volgt RAND of first in last out procedure tijdens het verwerken van de daarin opgeslagen elementen.

Voorbeeld:

gebruikend Systeem met System.Collections.Generic openbare klasse Edureka {openbare statische leegte Main (string [] args) {Stack names = nieuwe Stack () names.Push ('Chandan') names.Push ('Pooja') names.Push ( 'James') names.Push ('Rajesh') names.Push ('kumar') foreach (stringnaam in namen) {Console.WriteLine (naam)} Console.WriteLine ('Peek-element:' + names.Peek () ) Console.WriteLine ('Pop:' + names.Pop ()) Console.WriteLine ('After Pop, Peek-element:' + names.Peek ())}}

// Uitvoer:

kumar
Rajesh
James
Pooja
Chandan
Peek-element: kumar
Pop: kumar
Na Pop, Peek-element: Rajesh

Wachtrij

De wachtrij lijkt volledig op Stack, maar het enige verschil is dat de wachtrij volgt FIFO of first in en first out-principe tijdens het verwerken van de daarin opgeslagen elementen.

Voorbeeld:

systeem gebruiken met System.Collections.Generic openbare klasse Edureka {openbare statische leegte Main (string [] args) {Wachtrijnamen = nieuwe wachtrij () namen.Enqueue ('Srujan') namen.Enqueue ('Prajat') namen.Enqueue ( 'John') names.Enqueue ('Raju') names.Enqueue ('Hari') foreach (string name in names) {Console.WriteLine (name)} Console.WriteLine ('Peek element:' + names.Peek () ) Console.WriteLine ('Dequeue:' + names.Dequeue ()) Console.WriteLine ('After Dequeue, Peek-element:' + names.Peek ())}}

// Uitvoer:

Srujan
Prajat
John
Fierce
Dag
Peek-element: Srujan
Wachtrij: Srujan
Na Dequeue, Peek-element: Prajat

Gekoppelde lijst

De gekoppelde lijst is een dynamische geheugenverzameling. De elementen in de gekoppelde lijst worden opgeslagen door toegang te krijgen tot het geheugen vanaf de heap en de elementen in een doorlopende volgorde op te slaan door hun adressen te koppelen.

Voorbeeld:

systeem gebruiken met System.Collections.Generic openbare klasse Edureka {openbare statische leegte Main (string [] args) {var names = nieuwe LinkedList () names.AddLast ('Rajat') names.AddLast ('Arun') names.AddLast ( 'Prakash') names.AddLast ('jay') names.AddFirst ('sai') foreach (var name in names) {Console.WriteLine (name)}}}

// Uitvoer:

sai
Grenzen
Arun
Prakash
Jay

Woordenboek

Woordenboek categoriegebruikt deideevan de hashtabel. Het slaat waarden ophet uitgangspuntvan de sleutel. Het bevatkenmerkendsleutelsalleen. Doorde hulpvan de sleutel,we zullen gewoonzoeken ofelementen wegnemen.haargevonden in System.Collections.Generic naamruimte.

Voorbeeld:

gebruikend Systeem met System.Collections.Generic openbare klasse Edureka {openbare statische leegte Main (string [] args) {Dictionary names = new Dictionary () names.Add ('1', 'Shiva') names.Add ('2', 'Prasad') namen.Add ('3', 'Preetam') namen.Add ('4', 'Roy') namen.Add ('5', 'Akash') foreach (KeyValuePair kv in namen) {Console. WriteLine (kv.Key + '' + kv.Value)}}}

// Uitvoer:

1 Shiva
2 Prasad
3 Preetam
4 Roy
5Akasha

Gesorteerd woordenboek

De SortedDictionary categoriegebruikt deontwerpvan de hashtabel. Het slaat waarden ophet ideevan de sleutel. Het bevatkenmerkendsleutels en handhaaft oplopende volgorde ophet ideevan de sleutel. Doorde hulpvan de sleutel,we zullen gewoonzoeken ofelementen wegnemen.haargevonden in System.Collections.Generic naamruimte.

Voorbeeld:

systeem gebruiken met System.Collections.Generic openbare klasse Edureka {openbare statische leegte Main (string [] args) {SortedDictionary-namen = nieuwe SortedDictionary () -namen.Add ('1', 'Arun') namen.Add ('4', 'Vishal') namen.Add ('5', 'Ramesh') namen.Add ('3', 'Vidya') namen.Add ('2', 'Pallavi') foreach (KeyValuePair kv in namen) {Console. WriteLine (kv.Key + '' + kv.Value)}}}

// Uitvoer:

welke scannerklassemethode een string leest

1 Shiva
2 Prasad
3 Preetam
4 Roy
5Akasha

Gesorteerde lijst

De SortedList iseenarray van sleutel / waarde-paren. Het slaat waarden ophet uitgangspuntvan de sleutel. De SortedListcategoriebevatkenmerkendsleutels en handhaaft oplopende volgorde ophet uitgangspuntvan de sleutel. Doorde hulpvan de sleutel,we zijn in staat om eenvoudigzoeken of verwijderenelementen.haargevonden in System.Collections.Generic naamruimte.

Voorbeeld:

systeem gebruiken met System.Collections.Generic openbare klasse Edureka {openbare statische leegte Main (string [] args) {SortedDictionary-namen = nieuwe SortedDictionary () -namen.Add ('1', 'Arun') namen.Add ('4', 'Vishal') namen.Add ('5', 'Ramesh') namen.Add ('3', 'Vidya') namen.Add ('2', 'Pallavi') foreach (KeyValuePair kv in namen) {Console. WriteLine (kv.Key + '' + kv.Value)}}}

// Uitvoer:

1 Arun
2 Pallavi
3 Vidya
4 Vishal
5Ramesh

Structuur

De structuur is een door de gebruiker gedefinieerd datatype dat is ontworpen om meerdere elementen van het verschillende datatype op te slaan. De structuur wordt gedeclareerd met behulp van het sleutelwoord struct.

Voorbeeld:

System struct gebruiken Boeken {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 ++ Programmeerhandleiding 'Book1.book_id = 95908978 Book2.title =' Telecomfacturering 'Book2.author =' Karan 'Book2.subject =' Telecomfacturering 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 ('Boek 2 onderwerp: {0}', Boek2.subject) Console.WriteLine ('Boek 2 book_id: {0}', Book2.book_id) Console.ReadKey ()}}

// Uitvoer:

Titel boek 1: C # Programming
Boek 1 Auteur: Ramchandra Kumar
Boek 1 onderwerp: C ++ Programming Tutorial
Boek 1 book_id: 95908978
Titel boek 2: Telecom Billing
Boek 2 Auteur: Karan
Onderwerp van boek 2: Tutorial Telecom Billing
Boek 2 book_id: 18674900

Functies

De functie wordt gedefinieerd als een codeblok van de hoofdcode. De functie wordt gebruikt om instructies uit te voeren die in het codeblok zijn gespecificeerd. Een functie bestaat uit de volgende componenten.

  • Functienaam: Het is een onderscheidende naam die wordt gebruikt om een ​​functieaanroep te doen.
  • Retourtype: Het specificeert het gegevenstype van de geretourneerde waarde van de functie.
  • Lichaam: Het bevat uitvoerbare instructies.
  • Toegangsspecificatie: Het specificeert de toegankelijkheid van functies in de applicatie.
  • Parameters: Het is een lijst met argumenten die we tijdens de aanroep aan de functie kunnen doorgeven.

Syntaxis

FunctionName () {// body van de functie // return-instructie}

Voorbeeld:

gebruikend Systeemnaamruimte Functie Voorbeeld {class Edureka {openbare string Show (string message) {Console.WriteLine ('Inside Show Function') retourbericht} static void Main (string [] args) {Edureka program = nieuwe Edureka () string message = programma .Show ('To Edureka') Console.WriteLine ('Welkom' + bericht)}}}

// Uitvoer:

Inside Show-functie
Welkom in Edureka

Functies kunnen op 3 verschillende manieren worden uitgevoerd:

  • Bel op waarde
  • Bellen via referentie
  • Uit Parameter

Bel op waarde

In C #, waarde -type parameterszijndie passeen replicavan oorspronkelijke waarde voor defunctie in plaats vanreferentie. Hetnietaanpassende eerste waarde. Eenwijziging aangebrachtin geslaagdwaarde nietLeeftijdde bijzondere waarde.binnen devolgend voorbeeld,wij hebbenvoorbij gaan aanwaarde overaldebellen.

Voorbeeld:

met systeemnaamruimte 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-programma = nieuw Edureka () Console.WriteLine ('Waarde voordat de functie' + val wordt aangeroepen) program.Show (val) Console.WriteLine ('Waarde na het aanroepen van de functie' + val)}}}

// Uitvoer:

Waarde voordat de functie 50 wordt aangeroepen
De waarde in de showfunctie 2500
Waarde na het aanroepen van de functie 50

Bellen via referentie

In Call by Reference-methode,naar ref trefwoord om het argument als referentietype door te geven. Het geeft de verwijzing van argumenten door aan de functie in plaats van een kopie van de originele waarde. De wijzigingen in doorgegeven waarden zijn permanent en aanpassen de oorspronkelijke variabele waarde.

Voorbeeld:

systeemnaamruimte CallByReference gebruiken {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 programma = nieuw Edureka () Console.WriteLine ('Waarde voordat de functie' + val wordt aangeroepen) program.Show (ref val) Console.WriteLine ('Waarde na het aanroepen van de functie' + val)}}}

// Uitvoer:

Waarde voordat de functie 50 wordt aangeroepen
De waarde in de showfunctie 2500
Waarde na het aanroepen van de functie 2500

Uit Parameter

De uit-parameterbiedt uit trefwoord om argumenten door te geven als out-type. Het is vergelijkbaar met het referentietype, behalve dat de variabele niet hoeft te worden geïnitialiseerd voordat deze wordt doorgegeven. We moeten gebruiken uit trefwoord om het argument als out-type door te geven. Het is handig als we willen dat een functie meerdere waarden retourneert.

Voorbeeld:

systeemnaamruimte gebruiken OutParameter {class Edureka {public void Show (out int val) {int square = 5 val = square val * = val} statische leegte Main (string [] args) {int val = 50 Edureka-programma = nieuwe Edureka () Console.WriteLine ('Waarde voordat variabele wordt doorgegeven' + val) program.Show (out val) Console.WriteLine ('Waarde na ontvangst van de variabele out' + val)}}}

// Uitvoer:

Waarde voordat variabele 50 wordt doorgegeven

Waardena het ontvangen van de out-variabele 25

Laten we nu naar Objectgeoriënteerd programmeren gaan

Object georiënteerd programmeren

Object georiënteerd programmeren Systeemis een programmeerparadigma gebaseerd op het concept van voorwerpen die bevatten data leden en methoden gerelateerd aan hen. Het primaire doel van objectgeoriënteerd programmeren is het vergroten van de flexibiliteit en onderhoudbaarheid van programma's

Kenmerken van objectgeoriënteerd programmeren:

  • Het legt meer de nadruk op gegevens dan op procedure.
  • De programma's zijn onderverdeeld in objecten waardoor het gemakkelijk is om mee te werken.
  • Datastructuren zijn zo ontworpen dat ze de objecten karakteriseren.
  • Functies die werken Aande data van een object worden bij elkaar geplaatst in de datastructuur.
  • Gegevens zijn verborgen en kunnen zonder toestemming niet worden geopend door externe functies.
  • Communicatie tussen objecten kan plaatsvinden met behulp van functies.
  • Het toevoegen van nieuwe gegevens en functies is eenvoudig geworden.
  • Volgt de bottom-up benadering bij het ontwerpen van programma's.

De objectgeoriënteerde paradigma's in C # zijn als volgt

Opsomming in C #

Enum of ook wel genoemd als een opsomming in C # wordt gebruikt om constante waarden op te slaan zonder ze te hoeven wijzigen tijdens de volledige uitvoering van een C # -programma. Hetwordt gebruikt om een ​​reeks benoemde constanten op te slaan, zoals seizoen, dagen, maand, grootte enz

Voorbeeld:

met System public class EnumExample {public enum week {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday} public static void Main () {int x = (int) week.Monday int y = (int) week.Friday Console .WriteLine ('Monday = {0}', x) Console.WriteLine ('Friday = {0}', y)}}

// Uitvoer:

Maandag = 0
Vrijdag = 4

Objectgeoriënteerde programmeeraanpak

De objectgeoriënteerde programmeerstijl kan worden bereikt door de hieronder beschreven methoden te volgen.

Inkapseling

Inkapseling is een methode om de methoden samen met hun data leden.

Voorbeeld:

met Systeemnaamruimte 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 (' Breedte: {0} ', breedte) Console.WriteLine (' Gebied: {0} ', GetArea ())}} class ExecuteRectangle {statische leegte Main (string [] args) {Rechthoek r = nieuwe Rechthoek () r.lengte = 50 r.width = 35 r.Display () Console.ReadLine ()}}}

// Uitvoer:

Lengte: 50
Breedte: 35
Gebied: 1750

Abstractie

Abstractie is een methode om zich verstoppen het complexe coderingsgedeelte van de gebruiker door hem alleen de vereiste informatie te verstrekken die hij nodig heeft.

Voorbeeld:

gebruikend Systeem openbare abstracte klasse Shape {openbare abstracte leegte draw ()} openbare klasse Rectangle: Shape {openbare override void draw () {Console.WriteLine ('drawing rectangle ...')}} openbare klasse Circle: Shape {openbare override leegte draw () {Console.WriteLine ('drawing circle ...')}} public class TestAbstract {public static void Main () {Shape ss = nieuwe Rectangle () s.draw () s = nieuwe Circle () s.draw ()}}

// Uitvoer:

tekening rechthoek ...
tekening cirkel ...

Koppel

De koppel is volledig vergelijkbaar met abstractie. De functionaliteit van een interface is om de onbelangrijke gegevens voor de gebruiker te verbergen en hem de enige belangrijke gegevens te geven die hij nodig heeft.

Voorbeeld:

met behulp van de openbare systeeminterface Drawable {void draw ()} public class Rectangle: Drawable {public void draw () {Console.WriteLine ('drawing rectangle ...')}} public class Circle: Drawable {public void draw () {Console .WriteLine ('drawing circle ...')}} public class TestInterface {public static void Main () {Drawable dd = nieuwe Rectangle () d.draw () d = nieuwe Circle () d.draw ()}}

// Uitvoer:

tekening rechthoek ...
tekening cirkel ...

Polymorfisme

Polymorfismeis de combinatie van 'Poly' + 'Morphs' wat veel vormen betekent. Het is een Grieks woord. Dit betekent dat het codesegment meerdere vormen kan aannemen. We hebben twee soorten polymorfisme.

  • Compileer tijdpolymorfisme
  • Runtime polymorfisme

Voorbeeld:

gebruikend Systeem openbare klasse Dier {openbare tekenreeks color = 'white'} openbare klasse Hond: Dier {openbare tekenreeks color = 'zwart'} openbare klasse TestSealed {openbare statische leegte Main () {Dier d = nieuwe hond () Console.WriteLine ( d.kleur)}}

// Uitvoer:

wit

Erfenis

Erfenis is een proces waarbij een object automatisch alle eigenschappen en gedragingen van zijn bovenliggende object verwerft. U kunt de attributen en gedragingen die in een andere klasse zijn gedefinieerd, hergebruiken, uitbreiden of wijzigen. de klasse die de leden van een andere klasse erft, wordt genoemd afgeleide klasse en de klasse waarvan de leden worden geërfd, wordt de baseren klasse. De afgeleide klasse is de gespecialiseerde klasse voor de basisklasse.

Voorbeeld voor overerving op één niveau

systeemnaamruimte gebruiken RectangleApplication {class Rectangle {beschermde dubbele lengte beschermde dubbele breedte public Rectangle (double l, double w) {length = l width = w} public double GetArea () {retourlengte * breedte} public void Display () {Console. WriteLine ('Lengte: {0}', lengte) Console.WriteLine ('Breedte: {0}', breedte) Console.WriteLine ('Gebied: {0}', GetArea ())}} klasse Tafelblad: Rechthoek {privé dubbele kosten openbaar tafelblad (dubbel l, dubbel w): basis (l, w) {} openbaar dubbel GetCost () {dubbele kosten = GetArea () * 70 retourkosten} public void Display () {base.Display () Console .WriteLine ('Cost: {0}', GetCost ())}} class ExecuteRectangle {static void Main (string [] args) {Tabletop t = new Tabletop (4.5, 7.5) t.Display () Console.ReadLine () }}}

// Uitvoer:

Lengte: 4.5
Breedte: 7.5
Gebied: 33.75
Kosten: 2362,5

Voorbeeld van overerving op meerdere niveaus

met systeemnaamruimte InheritanceApplication {class Shape {public void setWidth (int w) {width = w} public void setHeight (int h) {height = h} protected int width protected int height} openbare interface PaintCost {int getCost (int area)} class Rectangle: Shape, PaintCost {public int getArea () {return (breedte * hoogte)} public int getCost (int area) {return area * 70}} class RectangleTester {static void Main (string [] args) {Rectangle Rect = new Rectangle () int gebied Rect.setWidth (5) Rect.setHeight (7) gebied = Rect.getArea () Console.WriteLine ('Totale oppervlakte: {0}', Rect.getArea ()) Console.WriteLine ('Total verfkosten: $ {0} ', Rect.getCost (gebied)) Console.ReadKey ()}}}

// Uitvoer:

Totale oppervlakte: 35
Totale verfkosten: $ 2450

Overbelasting

Overbelasting is een situatie waarbij we twee of leden hebben aangegeven met dezelfde naam. Overbelasting is ook mogelijk als we ook twee of meer methoden met dezelfde naam declareren. Laten we voorbeelden van beide bekijken.

Overbelasting van leden

Voorbeeld:

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

// Uitvoer:

35
60

Methode overbelasting

Voorbeeld:

gebruikend 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))}}

// Uitvoer:

35
33.699997

Overschrijven

Overschrijven is een situatie waarin de kindklasse dezelfde methode definieert die de ouder ook definieert. Laten we dit aan de hand van een klein voorbeeld begrijpen.

Voorbeeld:

gebruikend 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 ()}}

// Uitvoer:

Voedsel eten

Naamruimte

De naamruimte wordt in principe gebruikt om meerdere klassen in het programma te behandelen. De naamruimte is op verschillende manieren beschikbaar.

  • Systeem. Console: Hier de Systeem wordt de naamruimte
  • Om toegang te krijgen tot de klasse van een naamruimte, moeten we namespacename.classname.
  • We kunnen de gebruik makend van trefwoord ook.

Voorbeeld:

gebruikend Systeem gebruikend Eerste gebruikend Tweede naamruimte Eerste {openbare klasse Edureka {openbare void sayWelcome () {Console.WriteLine ('Welcome To Edureka')}}} naamruimte Tweede {openbare klasse Happy_Learning {openbare void sayWishes () {Console.WriteLine (' Happy Learning ')}}} public class Namespace {public static void Main () {Edureka h1 = nieuw Edureka () Happy_Learning w1 = nieuw Happy_Learning () h1.sayWelcome () w1.sayWishes ()}}

// Uitvoer:

Welkom in Edureka
Veel plezier met leren

Bestandsbewerkingen

De bestandsbewerkingen beschikbaar in C # zijn als volgt:

Operatie Omschrijving
BinaryReader Leest primitieve gegevens uit een binaire stroom.
BinaryWriter Schrijft primitieve gegevens in binair formaat.
BufferedStream Tijdelijke opslag voor een stroom bytes.
Directory Helpt bij het manipuleren van een directorystructuur.
Directoryinfo Wordt gebruikt voor het uitvoeren van bewerkingen op mappen.
DriveInfo Biedt informatie voor de schijven.
het dossier Helpt bij het manipuleren van bestanden.
Bestandsinformatie Wordt gebruikt voor het uitvoeren van bewerkingen op bestanden.
Bestandsstroom Wordt gebruikt om te lezen van en te schrijven naar elke locatie in een bestand.
MemoryStream Gebruikt voor willekeurige toegang tot gestreamde gegevens die in het geheugen zijn opgeslagen.
Pad Voert bewerkingen uit op padinformatie.
StreamReader Wordt gebruikt voor het lezen van tekens uit een bytestream.
StreamWriter Wordt gebruikt om karakters naar een stream te schrijven.
StringReader Wordt gebruikt voor het lezen van een stringbuffer.
StringWriter Wordt gebruikt om in een stringbuffer te schrijven.

FileMode

De FileMode is een enumerator die meerdere methoden voor het openen van bestanden definieert. De leden van de FileMode Enumerator worden als volgt beschreven:

  • Toevoegen: Het opent een bestaand bestand en plaatst de cursor aan het einde van het bestand, of maakt het bestand aan als het bestand niet bestaat.
  • Creëer: Het is ontworpen om een ​​nieuw bestand te maken.
  • Maak nieuw: Het is ontworpen om aan het besturingssysteem te specificeren dat het een nieuw bestand moet maken.
  • Open: Het is ontworpen om een ​​bestaand bestand te openen.
  • OpenOrCreate: Het is ontworpen om het besturingssysteem te specificeren dat het een bestand moet openen als het bestaat, anders zou het een nieuw bestand moeten maken.
  • Afkappen: Truncate opent een bestaand bestand en kapt de grootte af tot nul bytes.

FileAccess

FileAccess Enumerator wordt gebruikt om toegang te krijgen tot een bepaald bestand. Het heeft de volgende leden.

  • Lezen
  • Schrijven
  • Lezen schrijven

Bestand delen

De Bestand delen Enumerator wordt gebruikt om een ​​bepaald bestand te delen. Het heeft de volgende leden.

  • Erfelijk: Met Inheritable kan een filehandle een erfenis doorgeven aan de onderliggende processen.
  • Geen: Geen weigert het delen van het huidige bestand
  • Lezen: Met lezen kunt u het bestand openen om te lezen.
  • Lezen schrijven: ReadWrite maakt het mogelijk om het bestand te openen voor lezen en schrijven.
  • Schrijven: Met schrijven kunt u het bestand openen om te schrijven.

Evenementen

Een gebeurtenis staat algemeen bekend als een actie die door de gebruiker wordt gegenereerd. Het kan een klik met de muis zijn en zelfs een enkele toetsaanslag op het toetsenbord. Evenzo hebben C # -programma's ook evenementen. De generator van de gebeurtenis wordt de uitgeverij en de ontvanger van de gebeurtenis wordt de abonnee.

Uitgeverij

NAAR uitgeverij bevat de definitie van het evenement en de afgevaardigde. De event-afgevaardigde associatie is gedefinieerd in dit object. EEN uitgeverij class-object roept de gebeurtenis aan en wordt gemeld aan andere objecten.

Abonnee

NAAR abonnee accepteert het evenement en biedt een gebeurtenis handler. De delegeren in de publisher-klasse roept de methode / gebeurtenis op handler van de abonneeklasse.

Voorbeeld:

met behulp van systeemnaamruimte Edureka {public delegate string Del (string str) class EventBlock {event Del NewEvent public EventBlock () {this.NewEvent + = new Del (this.WelcomeUser)} public string WelcomeUser (string gebruikersnaam) {return 'Welcome To Edureka . '+ gebruikersnaam} static void Main (string [] args) {EventBlock obj1 = nieuw EventBlock () string resultaat = obj1.NewEvent (' Happy Learning ') Console.WriteLine (resultaat)}}}

// Uitvoer:

Welkom in Edureka. Veel plezier met leren

Merkloos product

Merkloos product is een concept waarbij de leden en methoden van een klas plaatshouders krijgen in Looptijd. We kunnen Generics definiëren met beugels. Laten we de volgende voorbeelden eens bekijken.

Generics in een klas

gebruikend Systeemnaamruimte Edureka {class GenericClass {public GenericClass (T msg) {Console.WriteLine (msg)}} class Programma {static void Main (string [] args) {GenericClass gen = new GenericClass ('Dit bericht is van generieke klasse' ) GenericClass genI = nieuwe GenericClass (123) GenericClass getCh = nieuwe GenericClass ('E')}}}

// Uitvoer:

Dit bericht is van de generieke klasse
123
IS

Generics in a Method

met systeemnaamruimte 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 bericht is van de generieke methode ') genC.Show (321) genC.Show (' H ')}}}

// Uitvoer:

Dit bericht is van de generieke methode
321
H.

Afgevaardigden

De Delegeren fungeert als een verwijzing naar de methode. In feite is het hetzelfde als een functie aanwijzer in C en C ++ maar veel beter en type-veilig. De afgevaardigde in statische methode kapselt alleen methode in. Terwijl de afgevaardigde in de voorbeeld methode omvat zowel methode als instantie. Het beste gebruik van gedelegeerde is om te gebruiken als een evenement.

Voorbeeld:

met behulp van System delegate int Calculator (int n) public class Edureka {static int number = 25 public static int add (int n) {number = number + n return number} public static int mul (int n) {number = number * n return number} public static int getNumber () {return number} public static void Main (string [] args) {Calculator c1 = nieuwe Calculator (toevoegen) Calculator c2 = nieuwe Calculator (mul) c1 (20) Console.WriteLine ('After calculator één afgevaardigde, het nieuwe nummer is: '+ getNumber ()) c2 (3) Console.WriteLine (' Na rekenmachine twee afgevaardigden, is het nieuwe nummer: '+ getNumber ())}}

// Uitvoer:

Na rekenmachine één afgevaardigde, is het nieuwe nummer: 45
Na rekenmachine twee afgevaardigden, is het nieuwe nummer: 135

Reflectie

De reflectie is vereist om de metadata in runtime te verkrijgen. De referentie is beschikbaar in System.Reflection naamruimte. Het vereist de volgende klassen om uit te voeren.

  • Type
  • Ledeninfo
  • ConstructorInfo
  • MethodInfo
  • Veldinfo
  • Eigenschapinfo
  • Typ Info
  • Evenementinfo
  • Module
  • bijeenkomst
  • AssemblyName
  • Wijzer

Typ klasse

C # Type klasse vertegenwoordigt typedeclaraties voor klassetypes, interfacetypes, opsommingstypes, arraysoorten, waardetypes

Typ Eigenschappen

Een lijst met belangrijke eigenschappen van Type klassen wordt hieronder vermeld.

Eigendom Omschrijving
bijeenkomst Haalt de Assembly voor dit type.
AssemblyQualifiedName Hiermee wordt de door de Assembly gekwalificeerde naam voor dit type opgehaald.
Attributen Hiermee worden de kenmerken opgehaald die aan het type zijn gekoppeld.
BaseType Haalt het basis- of oudertype op.
Voor-en achternaam Haalt de volledig gekwalificeerde naam van het type op.
IsAbstract wordt gebruikt om te controleren of het type Abstract is.
IsArray wordt gebruikt om te controleren of het type Array is.
IsClass wordt gebruikt om te controleren of het type Klasse is.
IsEnum wordt gebruikt om te controleren of het type Enum is.
IsInterface wordt gebruikt om te controleren of het type Interface is.
IsNested wordt gebruikt om te controleren of het type genest is.
IsPrimitive wordt gebruikt om te controleren of het type primitief is.
IsPointer wordt gebruikt om te controleren of het type Pointer is.
IsNotPublic wordt gebruikt om te controleren of het type niet Openbaar is.
IsPublic wordt gebruikt om te controleren of het type Openbaar is.
Is verzegeld wordt gebruikt om te controleren of het type verzegeld is.
IsSerializable wordt gebruikt om te controleren of het type serialiseerbaar is.
Type lid wordt gebruikt om te controleren of het type Lidtype of Genest type is.
Module Haalt de module van het type.
Naam Haalt de naam van het type op.
Naamruimte Haalt de naamruimte van het type op.
Eigendom Omschrijving
GetConstructors () Retourneert alle openbare constructors voor het type.
GetConstructors (BindingFlags) Retourneert alle constructors voor het type met opgegeven BindingFlags.
GetFields () Retourneert alle openbare velden voor het type.
GetFields (BindingFlags) Retourneert alle openbare constructors voor het type met opgegeven BindingFlags.
GetMembers () Retourneert alle openbare leden voor het type.
GetMembers (BindingFlags) Retourneert alle leden voor het type met opgegeven BindingFlags.
GetMethods () Retourneert alle openbare methoden voor het type.
GetMethods (BindingFlags) Retourneert alle methoden voor het type met opgegeven BindingFlags.
GetProperties () Retourneert alle openbare eigenschappen voor het type.
GetProperties (BindingFlags) Retourneert alle eigenschappen voor het Type met opgegeven BindingFlags.
GetType () Haalt het huidige type op.
GetType (tekenreeks) Haalt het type voor de opgegeven naam op.

Reflectievoorbeelden:

Type ophalen

Voorbeeld:

met behulp van System public class GetType {public static void Main () {int a = 10 Type type = a.GetType () Console.WriteLine (type)}}

// Uitvoer:

System.Int32

Krijg montage

Voorbeeld:

systeem gebruiken met System.Reflection openbare klasse GetAssembly {openbare statische leegte Main () {Type t = typeof (System.String) Console.WriteLine (t.Assembly)}}

// Uitvoer:

System.Private.CoreLib, versie = 4.0.0.0, cultuur = neutraal, PublicKeyToken = 7cec85d7bea7798e

Afdruktype-informatie

Voorbeeld:

systeem gebruiken met System.Reflection openbare klasse PrintType {openbare statische leegte 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)}}

// Uitvoer:

Klopt
Vals
Vals

Print constructeurs

Voorbeeld:

System gebruiken met 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)}}}

// Uitvoer:

Constructeurs van System.String type ...
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])

Afdrukmethoden

Voorbeeld:

System gebruiken met 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)}}}

// Uitvoer:

Methoden van System.String-type ...
System.String Replace (System.String, System.String)
System.String [] Split (Char, System.StringSplitOptions)
System.String [] Split (Char, Int32, System.StringSplitOptions)
System.String [] Split (Char [])
System.String [] Split (Char [], Int32)
System.String [] Split (Char [], System.StringSplitOptions)
System.String [] Split (Char [], Int32, System.StringSplitOptions)
System.String [] Split (System.String, System.StringSplitOptions)
System.String [] Split (System.String, Int32, System.StringSplitOptions)
System.String [] Split (System.String [], System.StringSplitOptions)
System.String [] Split (System.String [], Int32, System.StringSplitOptions) ......

Velden afdrukken

Voorbeeld:

systeem gebruiken met System.Reflection openbare klasse PrintFields {openbare statische leegte Main () {Type t = typeof (System.String) Console.WriteLine ('Velden van {0} type ...', t) FieldInfo [] ci = t .GetFields (BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic) foreach (FieldInfo f in ci) {Console.WriteLine (f)}}}

// Uitvoer:

Velden van het type System.String ...
System.String Empty

Laten we nu verder gaan met enkele geavanceerde C #-programmeerconcepten

Geavanceerde C # -concepten

Anonieme functie

De functie die geen specifieke naam heeft, wordt aangeroepen Anoniem Functies. Er zijn twee soorten anonieme functies beschikbaar in C #

  • Lambda-expressies
  • Anonieme methoden

Voorbeeld:

met Systeemnaamruimte 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)}}}

// Uitvoer:

Vierkant: 625

Anonieme methoden

De anonieme methode biedt dezelfde functionaliteit als een lambda uitdrukking, behalve dat het ons toestaat om de parameterlijst te negeren.

Voorbeeld:

systeemnaamruimte gebruiken AnonymousMethods {class Program {public delegate void AnonymousFun () static void Main (string [] args) {AnonymousFun fun = delegate () {Console.WriteLine ('This is anonieme functie')} fun ()}}}

// Uitvoer:

Dit is een anonieme functie

Multi-draadsnijden

Multithreading is een proces waarbij meerdere threads worden gemaakt en toegewezen voor verschillende taken. dit bespaart tijd door meerdere taken tegelijk uit te voeren. De multithreading-klasse is beschikbaar in System.Threading naamruimte.

System.Threading Namespace

De System.Threading namespace bevat klassen en interfaces om multithreading te vergemakkelijken. Het biedt klassen om de threadbron te synchroniseren. Hieronder vindt u een lijst met veelgebruikte klassen:

  • Draad
  • Mutex
  • Timer
  • Toezicht houden op
  • Semafoor
  • ThreadLocal
  • ThreadPool
  • Vluchtig

Proces en draad

Het proces is eigenlijk en toepassing en het wordt beschouwd als een zwaargewicht component. Aan de andere kant is de draad één enkele module van de hele applicatie. Het is lichtgewicht vergeleken met het proces

De levenscyclus van een draad

Elke draad heeft een levenscyclus. De levenscyclus van de draad wordt gedefinieerd in de klasse System.Threading.Thread. Hieronder volgen de fasen in de levenscyclus van een thread.

  • Niet begonnen
  • Runnable (klaar om te rennen)
  • Rennen
  • Niet uitvoerbaar
  • Dood

De klasse Thread biedt de volgende eigenschappen en methoden als volgt.

Thread-eigenschappen

Eigendom Omschrijving
CurrentThread geeft de instantie van de momenteel lopende thread terug.
Is levend controleert of de huidige thread leeft of niet.
IsBackground De waarde van de huidige thread ophalen / instellen is op de achtergrond of niet.
ManagedThreadId wordt gebruikt om de unieke id op te halen voor de momenteel beheerde thread.
Naam wordt gebruikt om de naam van de huidige thread op te halen of in te stellen.
Prioriteit wordt gebruikt om de prioriteit van de huidige thread op te halen of in te stellen.
ThreadState wordt gebruikt om een ​​waarde te retourneren die de threadstatus vertegenwoordigt.

Draad methoden

Methode Omschrijving
Abortus() wordt gebruikt om de thread te beëindigen. Het verhoogt ThreadAbortException.
Onderbreken() wordt gebruikt om een ​​thread te onderbreken die de status WaitSleepJoin heeft.
Meedoen () wordt gebruikt om alle aanroepende threads te blokkeren totdat deze thread eindigt.
ResetAbort () wordt gebruikt om het afbreken verzoek voor de huidige thread te annuleren.
Hervatten() wordt gebruikt om de hangende draad te hervatten. Het is verouderd.
Slaap (Int32) wordt gebruikt om de huidige thread voor de opgegeven milliseconden op te schorten.
Begin() verandert de huidige status van de thread in Runnable.
Opschorten () schort de huidige thread op als deze niet is onderbroken. Het is verouderd.
Opbrengst() wordt gebruikt om de uitvoering van de huidige thread over te dragen aan een andere thread.

Voorbeeld hoofddraad

systeem gebruiken met System.Threading openbare klasse Edureka {openbare statische leegte Main (string [] args) {Thread t = Thread.CurrentThread t.Name = 'MainThread' Console.WriteLine (t.Name)}}

// Uitvoer:

MainThread

Afhandeling van uitzonderingen

De uitzondering is een fout die door het programma wordt gegenereerd tijdens de uitvoeringstijd. We voeren de behandeling van uitzonderingen uit om ons programma uitzonderingsvrij te maken.

Uitzondering Omschrijving
System.DivideByZeroException Fout gegenereerd door een getal te delen door nul.
System.NullReferenceException behandelt de fout die wordt gegenereerd door te verwijzen naar het null-object.
System.InvalidCastException behandelt de fout die wordt gegenereerd door ongeldige typecasting.
System.IO.IOException behandelt de invoer- / uitvoerfouten.
System.FieldAccessException Fout gegenereerd door ongeldige privé / beveiligde toegang.

In C # gebruiken we 4 trefwoorden om te presteren afhandeling van uitzonderingen:

  • proberen
  • vangst
  • ten slotte, en
  • Gooi
Voorbeeld:
met 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 ('Dit bericht is van catch block')}}

// Uitvoer:

System.DivideByZeroException: geprobeerd te delen door nul.
op ExExaEdurekample.Main (String [] args) in F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: regel 10
Dit bericht is van het catch-blok

Aangepast uitzonderingsvoorbeeld

met behulp van System public class InvalidAgeException: Exception {public InvalidAgeException (String message): base (message) {}} public class Aangepast {static void validate (int age) {if (age<18) { throw new InvalidAgeException('Sorry, Age is expected to be greater than 18') } } public static void Main(string[] args) { try { validate(12) } catch (InvalidAgeException e) { Console.WriteLine(e) } Console.WriteLine('Catch block is being executed now.') } } 

// Uitvoer:

InvalidAgeException: Sorry, de leeftijd is naar verwachting groter dan 18
op Customised.validate (Int32-leeftijd) in F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: regel 18
op Customised.Main (String [] args) in F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: regel 23
Catch block wordt nu uitgevoerd.

Eindelijk blok voorbeeld

met System public class FinalExecption {public static void Main (string [] args) {probeer {int a = 10 int b = 0 int x = a / b} catch (uitzondering e) {Console.WriteLine (e)} eindelijk {Console .WriteLine ('Eindelijk blok wordt uitgevoerd')} Console.WriteLine ('Catch blok wordt uitgevoerd')}}

// Uitvoer:

System.DivideByZeroException: geprobeerd te delen door nul.
op FinalExecption.Main (String [] args) in F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: regel 10
Eindelijk wordt het blok uitgevoerd
Catch block wordt uitgevoerd

Handtekening systeemuitzondering

[SerializableAttribute] [ComVisibleAttribute (true)] openbare klasse SystemException: uitzondering

Constructors van systeemuitzonderingen

Bouwer Omschrijving
SystemException () Het wordt gebruikt om een ​​nieuw exemplaar van de SystemException-klasse te initialiseren.
SystemException

(SerializationInfo, StreamingContext)

Het wordt gebruikt om een ​​nieuw exemplaar van de SystemException-klasse te initialiseren met geserialiseerde gegevens.
SystemException (tekenreeks) Het wordt gebruikt om een ​​nieuw exemplaar van de SystemException-klasse te initialiseren met een opgegeven foutbericht.
SystemException (String, uitzondering) Het wordt gebruikt om een ​​nieuw exemplaar van de SystemException-klasse te initialiseren met een gespecificeerd foutbericht en een verwijzing naar de interne uitzondering die de oorzaak van deze uitzondering is.

Eigenschappen systeemuitzondering

Eigendom Omschrijving
Gegevens Het wordt gebruikt om een ​​verzameling sleutel / waarde-paren op te halen die aanvullende door de gebruiker gedefinieerde informatie over de uitzondering bieden.
HelpLink Het wordt gebruikt om een ​​link op te halen of in te stellen naar het Help-bestand dat bij deze uitzondering hoort.
HResult Het wordt gebruikt om HRESULT op te halen of in te stellen, een gecodeerde numerieke waarde die is toegewezen aan een specifieke uitzondering.
InnerException Het wordt gebruikt om het exemplaar van de uitzondering op te halen dat de huidige uitzondering heeft veroorzaakt.
Bericht Het wordt gebruikt om een ​​bericht te krijgen dat de huidige uitzondering beschrijft.
Bron Het wordt gebruikt om de naam op te halen of in te stellen van de applicatie die de fout veroorzaakt.
StackTrace Het wordt gebruikt om een ​​stringvoorstelling te krijgen van de onmiddellijke frames op de call-stack.
TargetSite Het wordt gebruikt om de methode op te halen die de huidige uitzondering genereert.

Systeemuitzonderingsmethoden

Methoden Omschrijving
Is gelijk aan (object) Het wordt gebruikt om te controleren of het opgegeven object gelijk is aan het huidige object of niet.
Afronden() Het wordt gebruikt om middelen vrij te maken en opruimacties uit te voeren.
GetBaseException () Het wordt gebruikt om een ​​root-uitzondering op te halen.
GetHashCode () Het wordt gebruikt om de hash-code op te halen.
GetObjectData

(SerializationInfo, StreamingContext)

Het wordt gebruikt om objectgegevens op te halen.
GetType () Het wordt gebruikt om het runtime-type van de huidige instantie op te halen.
MemberwiseClone () Het wordt gebruikt om een ​​ondiepe kopie van het huidige object te maken.
ToString () Het wordt gebruikt om een ​​tekenreeksweergave van de huidige uitzondering te maken en te retourneren.

Voorbeeld van een systeemuitzondering

met behulp van de systeemnaamruimte CSharpProgram {class SystemExceptionExample {static void Main (string [] args) {try {int [] arr = new int [5] arr [10] = 25} catch (SystemException e) {Console.WriteLine (e)} }}}

// Uitvoer:

System.IndexOutOfRangeException: Index bevond zich buiten de grenzen van de array.
op CSharpProgram.SystemExceptionExample.Main (String [] args) in F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: regel 11

Synchronisatie

Synchronisatie kan een techniek zijn waarmee slechts één thread gedurende een bepaalde tijd toegang heeft tot de bron. Geen enkele alternatieve thread zal onderbreken totdat de aangewezen thread zijn taak heeft voltooid.

In multithreading-programma's zijn threads toegestaanom toegang te krijgen tot een bron voor degespecificeerde uitvoeringtijd. Threads delen bronnen en worden asynchroon uitgevoerd. Toegang krijgen tot gedeelde bronnen (gegevens)kan een belangrijke taak zijndat in het algemeenzou kunnen stoppenhet systeem.we hebben de neiging om het te beïnvloedendoor threads op een synchrone manier te maken.

Voorbeeld zonder synchronisatie

met behulp van systeem met behulp van System.Threading-klasse Edureka {public void PrintTable () {voor (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() } } 

// Uitvoer:

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

Voorbeeld met synchronisatie

systeem gebruiken met System.Threading klasse Edureka {public void PrintTable () {lock (this) {voor (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() } } 

// Uitvoer:

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

Nieuwe functies

Microsoft heeft veel nieuwste functies aan de C # -taal toegevoegd, waarvan enkele hieronder worden vermeld.

C # 6,0

  • Statische richtlijn gebruiken
  • Uitzonderingsfilters
  • Wacht in vangst / eindelijk blokken
  • Initializers voor automatische eigenschappen
  • Standaardwaarden voor eigenschappen met alleen getter
  • Uitdrukkingslichamen
  • Null-propagator
  • String-interpolatie
  • Naam van operator
  • Woordenboek-initialisatie
  • Compiler-as-a-service (Roslyn)

C # 7,0

  • Patroonaanpassing
  • Tuples
  • Deconstructie
  • Lokale functies
  • Cijferscheidingsteken
  • Binaire letterlijke waarden
  • Ref-retouren en lokale bewoners
  • Constructeurs en finalizers met expressie
  • Expressie-achtige getters en setters
  • Uit variabelen
  • Gegeneraliseerde asynchrone retourtypen

C # 7.1

  • Async main
  • Standaarduitdrukkingen

Interviewvragen op basis van C #

De belangrijke interviewvragen gebaseerd op C # Programming Language zijn te vinden in deze geüpdatete .

Hiermee komen we aan het einde van dit 'C # Tutorial' -artikel. Ik hoop dat je het belang hebt begrepen van gegevensstructuren, syntaxis, functionaliteit en bewerkingen die ermee worden uitgevoerd. Nu je de basisprincipes van programmeren in C # hierdoor hebt begrepenC # zelfstudie, bekijk de training gegeven door Edureka op veel technologieën zoals Java, De lente en veelmeer, een vertrouwd online leerbedrijf met een netwerk van meer dan 250.000 tevreden studenten verspreid over de hele wereld kreeg een vraag voor ons? Vermeld het in het commentaargedeelte van deze 'C # Tutorial' -blog en we nemen zo snel mogelijk contact met u op.