Tutoriel C #: Les principes de base dont vous avez besoin pour maîtriser C #



Cet article sur le didacticiel C # vous aidera avec une connaissance détaillée des principes fondamentaux de C # ainsi que des exemples en temps réel pour une meilleure compréhension.

C # est un langage de programmation polyvalent et robuste développé par Microsoft Corporation en 2000 en tant que concurrent mortel de Java. C'est le langage de programmation le plus populaire et dominant en matière de développement Web et d'application de bureau.

Dans ce didacticiel C #, nous allons apprendre les concepts suivants.





Notions de base sur C #

Introduction au langage de programmation C #

Au début des années 90, Java était le principal langage de programmation pour le développement Web, le développement d'applications de bureau et de nombreux autres domaines. Microsoft voulait proposer un concurrent avec de nombreuses fonctionnalités avancées qui peuvent laisser Java loin derrière.



C#-Tutorial-hejlsberg_bio

C'était en l'an 2000, Anders Hejlsberg et son équipe Microsoft a eu l'idée de C # populairement appelé C-Sharp. Cette initiative a été approuvée par l'Organisation internationale de normalisation (MAJEUR) et l'Association européenne des fabricants d'ordinateurs (ECMA). et enfin, le C # entre dans le monde du développement logiciel.

Caractéristiques du langage de programmation C #



  • Langage de programmation orienté objet

L'approche de programmation orientée objet est ce qui fait de C # sharp le langage de programmation le plus convivial et le plus facile à développer et à maintenir.

  • Langue de type sécurisé

La signification de Type-Safe est que le compilateur aura accès uniquement à l'emplacement mémoire qui a l'autorisation de s'exécuter. Cette fonctionnalité améliore la sécurité du code à un niveau exponentiel.

  • Interopérabilité

La fonctionnalité d'interopérabilité rend C # suffisamment capable de faire tout ce qui est natif de C ++ d'une manière plus efficace qui peut surpasser C ++ lui-même.

  • Bibliothèque riche

C # donne accès à plusieurs nombres de bibliothèques intégrées qui fournissent des fonctionnalités préprogrammées pour réduire le temps passé dans le processus de développement.

  • Évolutif et actualisable

C # a été conçu pour être supérieur parmi les autres langages de programmation. Par conséquent, il est toujours ouvert aux mises à jour et il reste très évolutif avec ses fonctionnalités.

  • Orienté vers les composants

Les développeurs de Microsoft ont utilisé l'approche basée sur les composants pour développer C #. C'est la méthodologie de développement la plus prédominante pour garder C # hautement évolutif et mis à jour.

  • Langage structuré

L'approche de programmation structurée est préférée pendant le cycle de vie du développement logiciel car il devient facile de développer, compiler et déployer le logiciel par rapport à l'approche de programmation orientée procédure.

  • Vite

La programmation C # est plus rapide dans la compilation et l'exécution que C ++ et d'autres langages de programmation.

Installation

Il est prouvé que Microsoft Visual Studio est le meilleur éditeur de sa catégorie pour la programmation C #. Nous installerons et configurerons Microsoft Visual Studio pour exécuter nos programmes C # en suivant les étapes mentionnées ci-dessous:

Étape 1 : Téléchargez Microsoft Visual Studio

Google pour le dernière version de Visual Studio et téléchargez le installer fichier dans votre système local, puis courir le fichier d'installation comme un administrateur.

Étape 2: sélectionnez le package de développement de bureau .NET

Une fois que vous exécutez le programme d'installation, l'éditeur de Visual Studio sera téléchargé avec succès dans votre système local.Plus tard, une boîte de dialogue s'affiche sur l'écran de votre bureau pour demander à un ennemi package particulier dont vous avez besoin dans votre système. Ici, vous devez sélectionner le Développement de bureau .NET paquet.

Étape 3: définir l'environnement C #

Une fois vos colis pour Développement .NET sont téléchargés, puis une autre boîte de dialogue s'affichera sur votre écran vous demandant l'environnement de développement que vous recherchez. Ici, vous devez sélectionnez l'environnement pour C #.

Étape 4: Créez votre premier projet

Une fois l'environnement défini, vous êtes tous prêts à partir. Démarrez votre Visual Studio et sélectionnez créer un nouveau projet option dans la boîte de dialogue affichée.

Vous serez redirigé vers la boîte de dialogue suivante et là, vous devez sélectionner Bibliothèque de classes comme Norme .NET comme indiqué ci-dessous.

Dans la boîte de dialogue suivante, il vous sera demandé de Configurez votre projet . Configurez-le et vous êtes maintenant dans l'éditeur. Écrivez votre premier programme et courir il. La sortie sera affichée avec succès sur le Invite de commandes.

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

//Production:

Exécutons notre premier programme C #.

Structure du programme C #

Maintenant que nous avons exécuté notre premier programme C #, comprenons sa structure en détail. Un simple programme C # comprend les parties suivantes.

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

//Production:

Bienvenue à Edureka !, Happy Learning ..!

  • classe: classe peut être généralement définie comme un mot-clé qui est utilisé pour définir une classe dans le programme C #.
  • Edureka: C'est le nom du Classe. La classe est souvent considérée comme un modèle qui stocke les membres et les méthodes liés à la classe.
  • Principale: Fondamentalement, le méthode primaire de l'ensemble du programme C #, il agit comme la passerelle pour que le contrôle entre dans le programme. Il est exécuté avant toute autre méthode du programme.
  • néant: Ce segment du code est désigné au type de retour de la méthode. Il peut s'agir de n'importe quel type de données autre que void. Void signifie que la méthode ne contient aucune donnée renvoyée.
  • statique: C'est un mot-clé qui dit que les membres de données déclarés sont statiques et qu'une mémoire dédiée est allouée aux membres déclarés.
  • String [] args: Cela ressemble aux arguments de ligne de commande que nous utilisons dans notre programme. Pendant que nous exécutons notre programme, nous passons essentiellement arguments, qui sera accepté par le programme en raison de cette déclaration.
  • System.Console.WriteLine («Bienvenue dans Edureka !, Happy Learning ..!») Ici, Système est le espace de noms. La consoleest-ce que la catégorie décritedans l'espace de noms système. La WriteLine () est-ce lestatiquetechniquede la consolecatégorie utilisée pour noterle texte sur la console.

Maintenant, apprenons les types de données disponibles en C #.

Types de données

Les types de données en C # sont divisés en trois catégories décrites ci-dessous.

Types de données de valeur

La Types de données de valeur sont situés dans le System.ValueType Bibliothèque et sont toujours prêts à être accédés directement et les variables peuvent être directement affectées à une valeur particulière. Les types de données de valeur sont en outre classés en deux types, comme indiqué ci-dessous:

  • Types de données prédéfinis
  • Types de données définis par l'utilisateur

Types de données prédéfinis: Ce sont ceux que nous utilisons normalement dans notre programmation quotidienne. Ces types de données sont prédéfinis par les développeurs de langage et sont prêts à être utilisés pour les programmeurs.

Exemple:

int, float, char, double court, etc.

Types de données définis par l'utilisateur: Il existe des situations dans lesquelles nous pouvons avoir besoin de stocker différentes valeurs de types de données dans une seule variable. Dans ces cas, le Types de données prédéfinis ne sont pas juste assez. Défini par l'utilisateur Les types de données sont comme des types de données personnalisables pour l'utilisateur.

Exemple: Structure, Enum

Type de données Plage de la mémoire allouée Taille mémoire
char signé -128 à 127 1 octet
caractère non signé 0 à 127 1 octet
carboniser -128 à 127 1 octet
signé court -32 768 à 32 767 2 octets
court non signé 0 à 65 535 2 octets
court -32 768 à 32 767 2 octets
signé int -2 147 483 648 à -2 147 483 647 4 octets
entier non signé 0 à 4 294 967 295 4 octets
int -2 147 483 648 à -2 147 483 647 4 octets
signé long -9,223,372,036,854,775,808 à 9,223,372,036,854,775,807 8 octets
non signé longtemps 0 à 18,446,744,073,709,551,615 8 octets
longue -9,223,372,036,854,775,808 à 9,223,372,036,854,775,807 8 octets
flotte 1,5 * 10-45 - 3,4 * 1038, (précision à 7 chiffres) 4 octets
double 5,0 * 10-324 - 1,7 * 10308, (précision à 15 chiffres) 8 octets
décimal -7,9 * 10-28 - 7,9 * 1028, (précision à 28 chiffres) 16 octets


Type de données du pointeur

Le type de pointeur est un type de données simple. Sa fonctionnalité est complètement similaire aux pointeurs en C. Ils sont conçus pour stocker l'adresse d'un autre pointeur.

float * ptr

Types de données de référence

Le nom est explicite. La Types de données de référence en fait, ne stockent pas les variables, mais stockent la valeur de référence pour cette variable particulière. En d'autres termes, ils stockent l'adresse de la variable réelle.

comment utiliser l'itérateur java

Les variables de référence sont classées en trois types différents, comme indiqué ci-dessous:

  • Type d'objet

Le type de données objet est disponible dans le System.Object Classe.L'objectles typespeut êtreassigné auvaleurs deles autres types,référenceles types, prédéfini, défini par l'utilisateurles types. Mais avantaffectationvaleurs, il faut type conversion.

object abc abc = 50 // cela s'appelle la boxe
  • Type dynamique

Les variables de type dynamique sont conçues pour stocker presque tous les types de valeurs. Il est appelé en tant que type dynamique car la vérification de type des valeurs a lieu au moment de l'exécution

dynamique x = 10
  • Type de chaîne

Le type de chaîne est disponible dans System.String classe. Le type de chaîne est conçu pour stocker des littéraux de chaîne. Les littéraux de chaîne sont stockés sous deux formes dansdeux formes

    • cité
    • @quoted.
Chaîne S = 'Edureka'
  • La @quoted chaîne littérale ressemble à
@ 'Edureka'

Maintenant, comprenons les variables.

Variables

Les variables sont les noms attribués à l'emplacement de mémoire qui stockent certaines données fournies par l'utilisateur et ces données sont facilement accessibles à l'aide du nom de variable. Il existe cinq types de variables disponibles en C #

Type Exemple
Nul Données nulles
Booléen Vrai et faux
Entier Int, Char, Byte, Short, Long
Flotte Flotteur et double
Décimal Décimal

Exemple:

int a, b double x float p char abc

Règles à suivre pour déclarer des variables en C #

  • Une variable peut inclure des alphabets, des chiffres et des traits de soulignement.
  • Un nom de variable ne peut commencer que par un alphabet ou un trait de soulignement uniquement.
  • Les variables ne peuvent pas commencer par un chiffre ou un caractère spécial.
  • Les espaces blancs ne sont pas autorisés entre le nom de la variable.
  • Les mots clés réservés ne peuvent pas être utilisés comme noms de variables.

Les opérateurs

Un opérateur peut être défini comme un symbole spécial qui explique à l'ordinateur d'exécuter une opération mathématique particulière sur un ensemble de variables. C # inclut une variété d'opérateurs mentionnés ci-dessous.

  • Opérateurs arithmétiques
  • Opérateurs relationnels
  • Opérateurs logiques
  • Opérateurs au niveau du bit
  • Opérateurs d'affectation

Opérateurs arithmétiques

Opérateur Exemple La description
+ A + B Ajoute deux opérandes
- UN B Soustrait deux opérandes
* UN B Multiples deux opérandes
/ UN B Divise deux opérandes
% UN B Le reste de deux opérandes
++ A ++ Opération incrémentielle
- À- Opération de décrémentation

Opérateurs relationnels

Opérateur Exemple La description
== A == B Vrai, si les deux opérandes sont égaux, sinon Faux
! = A! = B Vrai, si les deux opérandes ne sont pas égaux, sinon Faux
> A> B Vrai, si A est plus grand, sinon Faux
< À Vrai, si B est plus grand, sinon Faux
> = A> = B True, si A est supérieur ou égal, sinon False
<= À<= B Vrai, id B est plus grand égal, sinon faux

Opérateurs logiques

Opérateur Exemple La description
&& UN B Vrai, si les deux opérandes sont vrais, sinon Faux
|| A || B True, si l'un des opérandes est vrai, sinon False
! UNE ! B Inverse l'état logique de l'opérande

Opérateurs au niveau du bit

À B UN B A | B A ^ B
un un un un 0
un 0 0 un un
0 un 0 un un
0 0 0 0 0
Opérateur Exemple La description
~ (~ A) L’opérateur de complément de Binary One est unaire et a pour effet de «retourner» les bits.
<< À<<2 Opérateur de décalage binaire gauche. La valeur des opérandes de gauche est déplacée vers la gauche du nombre de bits spécifié par l'opérande de droite.
>> A >> 2 Opérateur de décalage binaire vers la droite. La valeur des opérandes de gauche est déplacée vers la droite du nombre de bits spécifié par l'opérande de droite.

Opérateurs d'affectation

Opérateur Exemple La description
= A = B + C A = B + C, B + C est affecté à A
+ = A + = B A = A + B, A + B est attribué à A
- = A - = B A = A-B, A-B est affecté à A
* = A - = B A = A * B, A * B est attribué à A
/ = A / = B A = A / B, A / B est affecté à A
% = A% = B A = A% B, A% B est affecté à A
<<= À<<= 2 Opérateur de décalage gauche et d'affectation
>> = A >> = 2 Opérateur de décalage et d'affectation à droite
& = A & = 2 Opérateur au niveau du bit et d'affectation
^ = A ^ = 2 Opérateur d'exclusivité et d'affectation au niveau du bit
| = A! = 2 Opérateur d'inclusion et d'affectation au niveau du bit

Boucles

À boucle instruction est utilisée pour exécuter un bloc d'instructions à plusieurs reprises jusqu'à ce qu'une condition particulière soit satisfaite. Le langage C # comprend les instructions de boucle suivantes.

  • Pour la boucle
  • Alors que la boucle
  • Faire une boucle

Pour la boucle

La pour boucle est utilisé pour exécuter un segment de code particulier plusieurs fois jusqu'à ce que la condition donnée soit satisfaite.

Syntaxe

for (incrément / décrément de condition d'initialisation) {// segment de code}

Organigramme:

Exemple:

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

//Production:

un
2
3
4
5

Alors que la boucle

La Alors que la boucle est utilisé pour exécuter un segment de code plusieurs fois jusqu'à ce qu'une condition spécifique soit satisfaite.

Syntaxe

while (condition) {// code à exécuter}

Organigramme:

Exemple:

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

//Production:

La valeur de a: 5
La valeur de a: 6
La valeur de a: 7
La valeur de a: 8
La valeur de a: 9
La valeur de a: 10

Faire une boucle

Do while loop est complètement similaire à While Loop mais la seule différence est que la condition est placée à la fin de la boucle. Par conséquent, la boucle est exécutée au moins une fois.

Syntaxe

do {// code à exécuter} while (condition)

Organigramme:

Exemple:

using System namespace 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, produit) i ++} tandis que (i<= 10) } } } 

//Production:

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

Conditionnel

Expressions conditionnelles sont utilisés pour exécuter déclaration ou groupe de déclarations basé sur certaines conditions. Si la état est vrai alors Instructions C # sont exécutés sinon le suivant déclaration sera exécuté.

Les différents types d'instructions conditionnelles en langage C ++ sont les suivants:

  1. Si déclaration
  2. Instruction If-Else
  3. Instruction If-else imbriquée
  4. If-Else If échelle
  5. Instruction Switch

Si déclaration

Le seul si L'instruction en langage C # est utilisée pour exécuter le code si une condition est vraie. Il est également appelé déclaration de sélection à sens unique.

Syntaxe

if (expression-booléenne) {// instructions exécutées si expression-booléenne est vraie}

Organigramme:

Exemple:

using System namespace Conditional {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.') } } } 

//Production:

2 est inférieur à 5
Cette instruction est toujours exécutée.

Instruction If-Else

La sinon L'instruction en langage C est utilisée pour exécuter le code si la condition est vraie ou fausse. Il est également appelé instruction de sélection bidirectionnelle.

Syntaxe

if (expression-booléenne) {// instructions exécutées si expression-booléenne est vraie} else {// instructions exécutées si expression-booléenne est fausse}

Organigramme:

Exemple:

using System namespace Conditional {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.') } } } 

//Production:

12 est supérieur ou égal à 5
Cette instruction est toujours exécutée.

Instruction If-else imbriquée

Le imbriqué sinon l'instruction est utilisée lorsqu'un programme nécessite plusieurs expressions de test. Il est également appelé une instruction de sélection à plusieurs voies. Lorsqu'une série de décisions est impliquée dans une déclaration, nous utilisons sinon déclaration sous forme imbriquée.

Syntaxe

if (expression-booléenne) {if (expression-imbriquée-1) {// code à exécuter} else {// code à exécuter}} else {if (expression-imbriquée-2) {// code à exécuter } else {// code à exécuter}}

Organigramme:

Exemple:

using System namespace Conditionnel {class Nested {public static void Main (string [] args) {int first = 7, second = -23, third = 13 if (first & gt second) {if (first

//Production:

13 est le plus grand

Échelle sinon

La if-else-if L'instruction est utilisée pour exécuter un code à partir de plusieurs conditions. Elle est également appelée déclaration de décision par trajets multiples. C'est une chaîne d'instructions if..else dans laquelle chaque instruction if est associée à else if instruction et last serait une instruction else.

Syntaxe

if (condition1) {// code à exécuter si condition1 est vraie} else if (condition2) {// code à exécuter si condition2 est vraie} else if (condition3) {// code à exécuter si condition3 est vraie} ... else {// code à exécuter si toutes les conditions sont fausses}

Organigramme:

Exemple:

using System class 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 est 15 ') else if (i == 20) Console.WriteLine (' i is 20 ') else Console.WriteLine (' i is not present ')}}

//Production:

j'ai 20 ans

Instruction Switch

Commutateur L'instruction agit comme un substitut à une longue échelle if-else-if qui est utilisée pour tester une liste d'observations. Une instruction switch contient une ou plusieurs étiquettes de cas qui sont testées par rapport à l'expression switch. Lorsque l'expression correspond à un cas, les instructions associées à ce cas sont exécutées.

Syntaxe

switch (variable / expression) {case value1: // Instructions exécutées si expression (ou variable) = valeur1 break case value2: // Instructions exécutées si expression (ou variable) = valeur1 break ... ... ... .. . ... ... par défaut: // Instructions exécutées si aucune casse ne correspond}

Organigramme:

Exemple:

using System namespace Conditional {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') cas de rupture 'e': Console.WriteLine ('Vowel') cas de rupture 'i': Console.WriteLine ('Voyelle') cas de rupture 'o': Console.WriteLine ('Vowel') break case 'u': Console.WriteLine ('Vowel') break default: Console.WriteLine ('Not a voyel') break}}}}

//Production:

Entrez un alphabet
est
Voyelle

Cordes

Chaîne Datatype est membre de System.String Classe. Il est capable de stocker des données de type caractère. Nous pouvons effectuer diverses opérations sur les piqûres telles queconcaténation, comparaison, obtention de sous-chaîne, recherche, découpage, remplacement et bien d'autres.

L'analogie de la chaîne et de la chaîne

En C # Chaîne et chaîne sont équivalents. Le mot chaîne est un mot-clé et agit comme le System.String classe. Nous pouvons utiliser l'une ou l'autre des versions pour déclarer des chaînes.

Syntaxe:

string s1 = 'Edureka' // création d'une chaîne à l'aide du mot-clé string String s2 = 'Happy Learning' // création d'une chaîne à l'aide de la classe String

Exemple:

using 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 '} chaîne s2 = nouvelle chaîne (ch) Console.WriteLine ( s1) Console.WriteLine (s2)}}

//Production:

Edureka
Tutoriel Csharp

Méthodes de chaîne en C #

Méthode La description
Cloner() Utilisé pour renvoyer une référence à cette instance de String.
Comparer (chaîne, chaîne) Utilisé pour comparer deux objets String spécifiés.
Concat (chaîne, chaîne) Concaténez deux instances spécifiées de String.
Contient (chaîne) Renvoie une valeur indiquant une sous-chaîne spécifiée
Copier (chaîne) Utilisé pour créer une nouvelle instance de String avec la même valeur
CopyTo (Int, Char [], Int, Int) Copie les caractères à partir d'une position spécifiée
Equals (chaîne, chaîne) Détermine que deux objets String ont la même valeur.
Format (chaîne, objet) Remplacer un ou plusieurs éléments de format dans une chaîne spécifiée
IndexOf (chaîne) Rapporte l'index de base zéro de la première occurrence
Insérer (Int32, chaîne) Renvoie une nouvelle chaîne dans laquelle une chaîne est insérée à un index.
IsInterned (chaîne) Indique que cette chaîne est au format de normalisation Unicode C.
IsNullOrEmpty (chaîne) Indique que la chaîne spécifiée est null ou une chaîne vide.
IsNullOrWhiteSpace (chaîne) Utilisé pour indiquer si une chaîne spécifiée est nulle, vide,
Join (chaîne, chaîne []) Utilisé pour concaténer tous les éléments d'un tableau de chaînes
LastIndexOf (car) Indique la position d'index de base zéro du dernier caractère
LastIndexOfAny (car []) Indique la position d'index de base zéro du dernier caractère
Supprimer (Int32) Renvoie une nouvelle chaîne dans laquelle tous les caractères
Remplacer (chaîne, chaîne) Renvoie une nouvelle chaîne dans laquelle toutes les occurrences d'une chaîne
Fractionner (car []) Il est utilisé pour diviser une chaîne en sous-chaînes
StartsWith (chaîne) Il est utilisé pour vérifier si le début de cette chaîne
Sous-chaîne (Int32) Il est utilisé pour récupérer une sous-chaîne de cette instance.
ToCharArray () Copie les caractères de cette instance dans un tableau Unicode.
ToString () Il est utilisé pour renvoyer l'instance de String.
Réduire() Coupe la corde


Tableaux

Semblable à d'autres langages de programmation, C # a des tableaux. Les tableaux sont des structures de données simples conçues pour stocker le même type de données d'éléments dans un emplacement mémoire contigu.

C # prend en charge les types de tableaux suivants.

  • Réseau unidimensionnel
  • Réseau multidimensionnel
  • Réseau dentelé

Réseau unidimensionnel

Un tableau dimensionnel unique stocke les éléments sous la forme d'une seule ligne.

Syntaxe

int [] arr = new int [5] // création d'un tableau

Exemple:

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

//Production:

dix
vingt
30
40
cinquante

Réseau multidimensionnel

Multidimensional Array stocke des éléments sous la forme de plusieurs dimensions comme une matrice et un cube, etc.

Syntaxe

int val = a [2,3]

Exemple:

en utilisant l'espace de noms système 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 pour (i = 0 i<5 i++) { for (j = 0 j < 2 j++) { Console.WriteLine('a[{0},{1}] = {2}', i, j, a[i, j]) } } Console.ReadKey() } } } 

//Production:

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

Réseau dentelé

Jagged Array est simplement un tableau de tableaux.

Exemple:

utilisation de l'espace de noms système ArrayApplication {class MyArray {static void Main (string [] args) {int [] [] a = new int [] [] {new int [] {0,0}, new int [] {1,2 }, new int [] {2,4}, new int [] {3, 6}, new int [] {4, 8}} int i, j for (i = 0 i<5 i++) { for (j = 0 j < 2 j++) { Console.WriteLine('a[{0}][{1}] = {2}', i, j, a[i][j]) } } Console.ReadKey() } } } 

//Production:

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

Les collections

La collecte peut être simplement considérée comme un groupe d'objets collectés ensemble de manière à appliquer certaines fonctions aux données collectées. Les opérations qui peuvent éventuellement être effectuées sur une collection sont,

  • objet de magasin
  • objet de mise à jour
  • supprimer un objet
  • récupérer un objet
  • objet de recherche, et
  • objet de tri

Types de collections

Il existe trois possibilités différentes pour travailler avec des collections. Les trois espaces de noms sont mentionnés ci-dessous:

  • System.Collections.Generic Des classes
  • System.Collections Des classes
  • System.Collections.Concurrent Des classes

La classe System.Collections.Generic comprend les variétés de classes suivantes:

  • liste
  • Empiler
  • Queue
  • LinkedList
  • HashSet
  • SortedSet
  • dictionnaire
  • SortedDictionary
  • SortedList

La System.Collections les classes sont considérées comme des classes héritées. ils comprennent les classes suivantes.

  • Liste des tableaux
  • Empiler
  • Queue
  • Hashtable

La System.Collections.Concurrent Des classesnamespace fournit des classes pour les opérations thread-safe. Désormais, plusieurs threads ne créeront pas de problème pour accéder aux éléments de la collection. les classes disponibles sont,

  • BlocageCollection
  • ConcurrentBag
  • ConcurrentStack
  • ConcurrentQueue
  • ConcurrentDictionary
  • Partitions
  • Partitions
  • OrderablePartitioner

liste

La liste est considérée comme une structure de données disponible dans System.Collection.Generics espace de noms. Il peut stocker et récupérer des éléments. La liste est capable de stocker des éléments en double.

Exemple:

using System using 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') names.Add ('Kiran') foreach (var name in names) {Console.WriteLine (name)}}}

//Production:

Sandhya
Arun
Prashanth
Kiran

Jeu de hachage

HashSet C #la catégorie est souvent habituéeboutique,à emporteroulire les composants. Ilne fait passtocker en doubleComposants.c'est exhortéutiliser HashSet Catégoriesitu asrangeruniquement distinctif Composants . ses trouvé dans l'espace de noms System.Collections.Generic.

Exemple:

using System using System.Collections.Generic public class Edureka {public static void Main (string [] args) {var names = new HashSet () names.Add ('Sunil') names.Add ('Amar') names.Add ( 'Pujari') names.Add ('Imran') names.Add ('karan') foreach (var name in names) {Console.WriteLine (name)}}}

//Production:

Sunil
Amar
Pujari
Imran
Karan

Ensemble trié

C # SortedSetla classe est souvent habituéeboutique, retirer ou lis éléments . Il maintient l'ordre croissant etne fait passtocker en doubleéléments.c'est une invitepour utiliser SortedSetCatégoriesitu asranger distinctif Composants et maintenir l'ordre croissant.sestrouvé dans l'espace de noms System.Collections.Generic.

Exemple:

using System using 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)}}}

//Production:

Anuradha
Kajol
Praveen
Ravi
Sanjay

Empiler

La empiler est une collection simple qui suit BORD ou procédure de premier entré dernier sorti lors du traitement des éléments qui y sont stockés.

Exemple:

using System using 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') names.Push ('Rajesh') names.Push ('kumar') foreach (string name in names) {Console.WriteLine (name)} Console.WriteLine ('Peek element:' + names.Peek () ) Console.WriteLine ('Pop:' + names.Pop ()) Console.WriteLine ('After Pop, élément Peek:' + names.Peek ())}}

//Production:

Kumar
Rajesh
James
Pooja
Chandan
Élément Peek: kumar
Pop: kumar
Après Pop, élément Peek: Rajesh

Queue

La file d'attente est complètement similaire à Stack mais la seule différence est que la file d'attente suit FIFO ou principe du premier entré et premier sorti lors du traitement des éléments qui y sont stockés.

Exemple:

using System using 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') 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, élément Peek:' + names.Peek ())}}

//Production:

Srujan
Prajat
John
Féroce
journée
Élément Peek: Srujan
Dequeue: Srujan
Après Dequeue, élément Peek: Prajat

Liste liée

La liste chaînée est une collection de mémoire dynamique. Les éléments de la liste Linked sont stockés en accédant à la mémoire à partir du tas et en stockant les éléments dans un ordre continu en liant leurs adresses.

Exemple:

using System using System.Collections.Generic public class Edureka {public static void Main (string [] args) {var names = new LinkedList () names.AddLast ('Rajat') names.AddLast ('Arun') names.AddLast ( 'Prakash') names.AddLast ('jay') names.AddFirst ('sai') foreach (var name in names) {Console.WriteLine (name)}}}

//Production:

sai
Bornes
Arun
Prakash
geai

dictionnaire

dictionnaire Catégorieutilise leidéede la table de hachage. Il stocke les valeurs surla prémissede la clé. Il contientdistinctifclésuniquement. Parl'assistancede clé,nous allons simplementrechercher ouemporter des éléments.sestrouvé dans l'espace de noms System.Collections.Generic.

Exemple:

using System using System.Collections.Generic public class Edureka {public static void Main (string [] args) {Dictionary names = new Dictionary () names.Add ('1', 'Shiva') names.Add ('2', Noms 'Prasad') Ajoutez des noms ('3', 'Preetam') Ajoutez des noms ('4', 'Roy') Ajoutez ('5', 'Akash') foreach (KeyValuePair kv dans les noms) {Console. WriteLine (kv.Key + '' + kv.Value)}}}

//Production:

1 Shiva
2 Prasad
3 préétam
4 Roy
5Akash

Dictionnaire trié

La SortedDictionary Catégorieutilise leconceptionde la table de hachage. Il stocke les valeurs surl'idéede la clé. Il contientdistinctifclés et maintient l'ordre croissant surl'idéede la clé. Parl'assistancede clé,nous allons simplementrechercher ouemporter des éléments.sestrouvé dans l'espace de noms System.Collections.Generic.

Exemple:

using System using System.Collections.Generic public class Edureka {public static void Main (string [] args) {SortedDictionary names = new SortedDictionary () names.Add ('1', 'Arun') names.Add ('4', Noms 'Vishal') Ajoutez des noms ('5', 'Ramesh') Ajoutez des noms ('3', 'Vidya') Ajoutez ('2', 'Pallavi') foreach (KeyValuePair kv dans les noms) {Console. WriteLine (kv.Key + '' + kv.Value)}}}

//Production:

1 Shiva
2 Prasad
3 préétam
4 Roy
5Akash

Liste triée

La SortedList estunetableau de paires clé / valeur. Il stocke les valeurs surla prémissede la clé. La SortedListCatégoriecontientdistinctifclés et maintient l'ordre croissant surla prémissede la clé. Parl'assistancede clé,nous pouvons simplementrechercher ou supprimeréléments.sestrouvé dans System.Collections.Generic espace de noms.

Exemple:

using System using System.Collections.Generic public class Edureka {public static void Main (string [] args) {SortedDictionary names = new SortedDictionary () names.Add ('1', 'Arun') names.Add ('4', Noms 'Vishal') Ajoutez des noms ('5', 'Ramesh') Ajoutez des noms ('3', 'Vidya') Ajoutez ('2', 'Pallavi') foreach (KeyValuePair kv dans les noms) {Console. WriteLine (kv.Key + '' + kv.Value)}}}

//Production:

1 Arun
2 Pallavi
3 Vidya
4 Vishal
5Ramesh

Structure

La structure est un type de données défini par l'utilisateur conçu pour stocker plusieurs éléments des différents types de données. La structure est déclarée à l'aide du mot-clé struct.

Exemple:

using 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 =' Tutoriel de programmation C ++ 'Book1.book_id = 95908978 Book2.title =' Facturation Télécom 'Book2.author =' Karan 'Book2.subject =' Tutoriel de facturation Télécom 'Book2.book_id = 18674900 Console.WriteLine ( 'Book 1 title: {0}', Book1.title) Console.WriteLine ('Book 1 Author: {0}', Book1.author) Console.WriteLine ('Book 1 subject: {0}', Book1.subject) Console.WriteLine ('Book 1 book_id: {0}', Book1.book_id) Console.WriteLine ('Book 2 title: {0}', Book2.title) Console.WriteLine ('Book 2 Author: {0}', Book2.author) Console.WriteLine ('Book 2 subject: {0}', Book2.subject) Console.WriteLine ('Book 2 book_id: {0}', Book2.book_id) Console.ReadKey ()}}

//Production:

Titre du livre 1: Programmation C #
Livre 1 Auteur: Ramchandra Kumar
Sujet du livre 1: Tutoriel de programmation C ++
Livre 1 book_id: 95908978
Titre du livre 2: Facturation des télécommunications
Livre 2 Auteur: Karan
Sujet du livre 2: Tutoriel sur la facturation télécom
Livre 2 book_id: 18674900

Les fonctions

La fonction est définie comme un bloc de code du code principal. La fonction est utilisée pour exécuter les instructions spécifiées dans le bloc de code. Une fonction comprend les éléments suivants.

  • Nom de la fonction: Il s'agit d'un nom distinctif utilisé pour effectuer un appel de fonction.
  • Type de retour: Il spécifie le type de données de la valeur de retour de la fonction.
  • Corps: Il contient des instructions exécutables.
  • Spécificateur d'accès: Il spécifie l'accessibilité des fonctions dans l'application.
  • Paramètres: C'est une liste d'arguments que nous pouvons passer à la fonction lors de l'appel.

Syntaxe

FunctionName () {// corps de la fonction // instruction de retour}

Exemple:

using System namespace FunctionExample {class Edureka {public string Show (string message) {Console.WriteLine ('Inside Show Function') return message} static void Main (string [] args) {Edureka program = new Edureka () string message = programme .Show ('To Edureka') Console.WriteLine ('Welcome' + message)}}}

//Production:

Fonction d'affichage intérieure
Bienvenue à Edureka

Les fonctions peuvent être exécutées de 3 manières différentes:

  • Appel par valeur
  • Appel par référence
  • Paramètre de sortie

Appel par valeur

En C #, valeur -type paramètressontqui passeune répliquede valeur originale aufonction au lieu deréférence. Ilne fait pasmodifierla première valeur. Unemodification crééeen passéla valeur n'est pasÂgela valeur particulière.dans leexemple suivant,nous avonspasservaleur partoutlaappel.

Exemple:

using System namespace 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 Programme Edureka = new Edureka () Console.WriteLine ('Valeur avant d'appeler la fonction' + val) program.Show (val) Console.WriteLine ('Valeur après appel de la fonction' + val)}}}

//Production:

Valeur avant d'appeler la fonction 50
La valeur à l'intérieur de la fonction show 2500
Valeur après l'appel de la fonction 50

Appel par référence

Dans la méthode Call by Reference,à réf mot-clé pour passer l'argument en tant que type de référence. Il transmet la référence des arguments à la fonction plutôt qu'une copie de la valeur d'origine. Les modifications des valeurs passées sont permanentes et modifier la valeur de la variable d'origine.

Exemple:

using System namespace 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 Programme Edureka = new Edureka () Console.WriteLine ('Valeur avant d'appeler la fonction' + val) program.Show (ref val) Console.WriteLine ('Valeur après appel de la fonction' + val)}}}

//Production:

Valeur avant d'appeler la fonction 50
La valeur à l'intérieur de la fonction show 2500
Valeur après l'appel de la fonction 2500

Paramètre de sortie

Le paramètre Outfournit en dehors mot-clé pour passer des arguments comme hors-type. C'est comme le type référence, sauf qu'il ne nécessite pas l'initialisation de la variable avant de passer. Il faut utiliser en dehors mot-clé pour passer l'argument comme hors-type. C'est utile lorsque nous voulons qu'une fonction renvoie plusieurs valeurs.

Exemple:

using System namespace 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 ('Valeur avant de transmettre la variable' + val) program.Show (out val) Console.WriteLine ('Valeur après réception de la variable out' + val)}}}

//Production:

Valeur avant de passer la variable 50

Valeuraprès avoir reçu la variable out 25

Passons maintenant à la programmation orientée objet

Programmation orientée objet

Programmation orientée objet Systèmeest un paradigme de programmation basé sur le concept de objets qui contiennent membres de données et méthodes liés à eux. Le but principal de la programmation orientée objet est d'augmenter la flexibilité et la maintenabilité des programmes

Caractéristiques de la programmation orientée objet:

  • Il met davantage l'accent sur les données que sur la procédure.
  • Les programmes sont divisés en objets, ce qui facilite leur travail.
  • Les structures de données sont conçues de manière à caractériser les objets.
  • Des fonctions qui fonctionnent surles données d'un objet sont placées ensemble dans la structure de données.
  • Les données sont masquées et ne sont pas accessibles par des fonctions externes sans autorisation.
  • La communication entre les objets peut avoir lieu à l'aide de fonctions.
  • L'ajout de nouvelles données et fonctions est devenu facile.
  • Suit l'approche ascendante dans la conception des programmes.

Les paradigmes orientés objet en C # sont les suivants

Énumération en C #

Enum ou aussi appelé comme un énumération en C # est utilisé pour stocker des valeurs constantes sans avoir à les modifier pendant toute l'exécution d'un programme C #. Ilest utilisé pour stocker un ensemble de constantes nommées telles que la saison, les jours, le mois, la taille, etc.

Exemple:

using System public class EnumExample {public enum week {lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche} public static void Main () {int x = (int) week.Monday int y = (int) week.Friday Console .WriteLine ('Lundi = {0}', x) Console.WriteLine ('Vendredi = {0}', y)}}

//Production:

Lundi = 0
Vendredi = 4

Approche de programmation orientée objet

Le style de programmation orienté objet peut être obtenu en suivant les méthodes prescrites ci-dessous.

Encapsulation

Encapsulation est une méthode pour combiner les méthodes avec leur membres de données.

Exemple:

using System namespace 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 (' Largeur: {0} ', width) Console.WriteLine (' Area: {0} ', GetArea ())}} classe ExecuteRectangle {static void Main (string [] args) {Rectangle r = new Rectangle () r.length = 50 r.width = 35 r.Display () Console.ReadLine ()}}}

//Production:

Longueur: 50
Largeur: 35
Superficie: 1750

Abstraction

C ++ itératif fibonacci

Abstraction est une méthode pour cacher la partie de codage complexe de l'utilisateur en lui fournissant uniquement les informations nécessaires dont il a besoin.

Exemple:

using 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 ('drawing circle ...')}} classe publique TestAbstract {public static void Main () {Shape ss = new Rectangle () s.draw () s = new Circle () s.draw ()}}

//Production:

dessin rectangle ...
dessin cercle ...

Interface

La interface est complètement similaire à l'abstraction. La fonctionnalité d'une interface est de cacher les données sans importance à l'utilisateur et de lui fournir les seules données importantes dont il a besoin.

Exemple:

using System public interface Drawable {void draw ()} classe publique Rectangle: Drawable {public void draw () {Console.WriteLine ('drawing rectangle ...')}} public class Circle: Drawable {public void draw () {Console .WriteLine ('drawing circle ...')}} classe publique TestInterface {public static void Main () {Drawable dd = new Rectangle () d.draw () d = new Circle () d.draw ()}}

//Production:

dessin rectangle ...
dessin cercle ...

Polymorphisme

Polymorphismeest la combinaison de 'poly' + «Morphs» ce qui signifie de nombreuses formes. C'est un mot grec. Cela signifie que le segment de code peut prendre plusieurs formes. Nous avons deux types de polymorphisme.

  • Polymorphisme au moment de la compilation
  • Polymorphisme d'exécution

Exemple:

using System public class Animal {public string color = 'white'} public class Dog: Animal {public string color = 'black'} public class TestSealed {public static void Main () {Animal d = new Dog () Console.WriteLine ( d.color)}}

//Production:

blanc

Héritage

Héritage est un processus dans lequel un objet acquiert automatiquement toutes les propriétés et tous les comportements de son objet parent. Vous pouvez réutiliser, étendre ou modifier les attributs et comportements définis dans une autre classe. la classe qui hérite des membres d'une autre classe est appelée Classe dérivée et la classe dont les membres sont hérités s'appelle le base classe. La classe dérivée est la classe spécialisée de la classe de base.

Exemple d'héritage à un seul niveau

using System namespace RectangleApplication {class Rectangle {protected double length protected double width public Rectangle (double l, double w) {length = l width = w} public double GetArea () {return length * width} public void Display () {Console. WriteLine ('Length: {0}', length) Console.WriteLine ('Width: {0}', width) Console.WriteLine ('Area: {0}', GetArea ())}} classe Table: Rectangle {privé double coût public de table (double l, double w): base (l, w) {} public double GetCost () {double cost cost = GetArea () * 70 coût de retour} public void Display () {base.Display () Console .WriteLine ('Cost: {0}', GetCost ())}} classe ExecuteRectangle {static void Main (string [] args) {Tabletop t = new Tabletop (4.5, 7.5) t.Display () Console.ReadLine () }}}

//Production:

Longueur: 4,5
Largeur: 7,5
Secteur: 33,75
Coût: 2362,5

Exemple d'héritage à plusieurs niveaux

using System namespace InheritanceApplication {class Shape {public void setWidth (int w) {width = w} public void setHeight (int h) {height = h} protected int width protected int height} public interface PaintCost {int getCost (int area)} class Rectangle: Shape, PaintCost {public int getArea () {return (largeur * hauteur)} public int getCost (int area) {return area * 70}} class RectangleTester {static void Main (string [] args) {Rectangle Rect = new Rectangle () int area Rect.setWidth (5) Rect.setHeight (7) area = Rect.getArea () Console.WriteLine ('Surface totale: {0}', Rect.getArea ()) Console.WriteLine ('Total coût de la peinture: $ {0} ', Rect.getCost (area)) Console.ReadKey ()}}}

//Production:

Surface totale: 35
Coût total de la peinture: 2450 $

Surcharge

La surcharge est une situation où nous avons deux membres ou membres déclarés en utilisant le même nom. La surcharge est également possible lorsque nous déclarons deux méthodes ou plus avec le même nom. Voyons des exemples des deux.

Surcharge des membres

Exemple:

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

//Production:

35
60

Surcharge de méthode

Exemple:

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

//Production:

35
33,699997

Primordial

Le remplacement est une situation où la classe enfant définit la même méthode que celle définie par le parent. Comprenons cela à travers un petit exemple.

Exemple:

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

//Production:

Manger des aliments

Espace de noms

La espace de noms est essentiellement utilisé pour gérer plusieurs classes présentes dans le programme. L'espace de noms est disponible de différentes manières.

  • System.Console: Ici le Système devient l'espace de noms
  • Pour accéder à la classe d'un espace de noms, nous devons utiliser namespacename.classname.
  • Nous pouvons utiliser le en utilisant mot-clé également.

Exemple:

utilisation de System en utilisant First using 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 ')}}} Public class Namespace {public static void Main () {Edureka h1 = new Edureka () Happy_Learning w1 = new Happy_Learning () h1.sayWelcome () w1.sayWishes ()}}

//Production:

Bienvenue à Edureka
Bon apprentissage

Opérations sur les fichiers

La opérations sur les fichiers disponibles en C # sont les suivants:

Opération La description
BinaryReader Lit les données primitives à partir d'un flux binaire.
BinaryWriter Écrit les données primitives au format binaire.
BufferedStream Stockage temporaire pour un flux d'octets.
Annuaire Aide à manipuler une structure de répertoires.
DirectoryInfo Utilisé pour effectuer des opérations sur les répertoires.
DriveInfo Fournit des informations sur les lecteurs.
Fichier Aide à manipuler les fichiers.
FileInfo Utilisé pour effectuer des opérations sur des fichiers.
FileStream Utilisé pour lire et écrire à n'importe quel emplacement d'un fichier.
MemoryStream Utilisé pour un accès aléatoire aux données diffusées stockées en mémoire.
Chemin Effectue des opérations sur les informations de chemin.
StreamReader Utilisé pour lire les caractères d'un flux d'octets.
StreamWriter Est utilisé pour écrire des caractères dans un flux.
StringReader Est utilisé pour la lecture à partir d'un tampon de chaîne.
StringWriter Est utilisé pour écrire dans un tampon de chaîne.

FileMode

La FileMode est un énumérateur qui définit plusieurs méthodes d'ouverture de fichier. Les membres de l'énumérateur FileMode sont décrits comme suit:

  • Ajouter: Il ouvre un fichier existant et place le curseur à la fin du fichier, ou crée le fichier si le fichier n'existe pas.
  • Créer: Il est conçu pour créer un nouveau fichier.
  • Créer un nouveau: Il est conçu pour spécifier au système d'exploitation qu'il doit créer un nouveau fichier.
  • Ouvert: Il est conçu pour ouvrir un fichier existant.
  • OpenOrCreate: Il est conçu pour spécifier le système d'exploitation qu'il doit ouvrir un fichier s'il existe, sinon il doit créer un nouveau fichier.
  • Tronquer: Truncate ouvre un fichier existant et tronque sa taille à zéro octet.

FileAccess

FileAccess L'énumérateur est utilisé pour accéder à un fichier particulier. Il a les membres suivants.

  • Lis
  • Écrire
  • Lire écrire

Partage de fichiers

La Partage de fichiers L'énumérateur est utilisé pour partager un fichier particulier. Il a les membres suivants.

  • Héritier: Inheritable permet à un descripteur de fichier de transmettre un héritage aux processus enfants.
  • Aucun: Aucun ne refuse le partage du fichier actuel
  • Lis: Lire permet d'ouvrir le fichier pour la lecture.
  • Lire écrire: ReadWrite permet d'ouvrir le fichier pour la lecture et l'écriture.
  • Écrire: Write permet d'ouvrir le fichier pour l'écriture.

Événements

Un événement est généralement connu comme une action générée par l'utilisateur. Cela peut être un clic de souris et même une simple pression sur le clavier. De même, les programmes C # ont également des événements. Le générateur de l'événement s'appelle le éditeur et le destinataire de l'événement est appelé le abonné.

Éditeur

À éditeur contient la définition de l'événement et le délégué. La délégué d'événement L'association est définie dans cet objet. UNE éditeur objet de classe appelle l'événement et il est notifié aux autres objets.

Abonné

À abonné accepte l'événement et fournit un gestionnaire d'événements. La déléguer dans la classe de l'éditeur appelle la méthode / l'événement gestionnaire de la classe d'abonné.

Exemple:

using System namespace Edureka {chaîne de délégation publique Del (string str) class EventBlock {event Del NewEvent public EventBlock () {this.NewEvent + = new Del (this.WelcomeUser)} chaîne publique WelcomeUser (string username) {return 'Welcome To Edureka . '+ nom d'utilisateur} static void Main (string [] args) {EventBlock obj1 = new EventBlock () string result = obj1.NewEvent (' Happy Learning ') Console.WriteLine (result)}}}

//Production:

Bienvenue à Edureka. Bon apprentissage

Génériques

Génériques est un concept qui consiste à fournir aux membres et aux méthodes d'une classe des espaces réservés dans Durée. Nous pouvons définir les génériques en utilisant supports. Voyons les exemples suivants.

Génériques dans une classe

using System namespace 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')}}}

//Production:

Ce message provient d'une classe générique
123
EST

Génériques dans une méthode

using System namespace 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 le message provient de la méthode générique ') genC.Show (321) genC.Show (' H ')}}}

//Production:

Ce message provient de la méthode générique
321
H

Délégués

La Déléguer fait référence à la méthode. Fondamentalement, c'est la même chose qu'un pointeur de fonction en C et C ++ mais bien mieux et sans risque pour le type. Le délégué en méthode statique encapsule la méthode uniquement. Alors que le délégué dans le exemple méthode encapsule à la fois la méthode et l'instance. La meilleure utilisation du délégué est de l'utiliser comme un événement.

Exemple:

using 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 = new Calculator (add) Calculator c2 = new Calculator (mul) c1 (20) Console.WriteLine ('After calculator un délégué, le nouveau nombre est: '+ getNumber ()) c2 (3) Console.WriteLine (' Après le délégué de la calculatrice deux, le nouveau nombre est: '+ getNumber ())}}

//Production:

Après calculatrice un délégué, le nouveau nombre est: 45
Après le délégué de la calculatrice deux, le nouveau nombre est: 135

Réflexion

La réflexion est requise pour obtenir les métadonnées au moment de l'exécution. La référence est disponible en Réflexion système espace de noms. Il nécessite les classes suivantes pour s'exécuter.

  • Type
  • MemberInfo
  • ConstructorInfo
  • MethodInfo
  • FieldInfo
  • PropertyInfo
  • TypeInfo
  • EventInfo
  • Module
  • Assemblée
  • AssemblyName
  • Aiguille

Classe de type

La classe de type C # représente les déclarations de type pour les types de classe, les types d'interface, les types d'énumération, les types de tableau, les types de valeur

Type de propriétés

Une liste des propriétés importantes des classes Type est mentionnée ci-dessous.

Propriété La description
Assemblée Obtient l'assembly pour ce type.
AssemblyQualifiedName Obtient le nom qualifié d'assembly pour ce type.
Les attributs Obtient les attributs associés au type.
Type de base Obtient le type de base ou parent.
Nom et prénom Obtient le nom qualifié complet du type.
EstRésumé est utilisé pour vérifier si le type est Abstract.
IsArray est utilisé pour vérifier si le type est Array.
IsClass est utilisé pour vérifier si le type est Classe.
IsEnum est utilisé pour vérifier si le type est Enum.
IsInterface est utilisé pour vérifier si le type est Interface.
Est imbriqué est utilisé pour vérifier si le type est imbriqué.
IsPrimitive est utilisé pour vérifier si le type est Primitive.
IsPointer est utilisé pour vérifier si le type est Pointer.
IsNotPublic est utilisé pour vérifier si le type n'est pas Public.
IsPublic est utilisé pour vérifier si le type est Public.
Est scellé est utilisé pour vérifier si le type est scellé.
IsSerializable est utilisé pour vérifier si le type est sérialisable.
MemberType est utilisé pour vérifier si le type est le type de membre de type imbriqué.
Module Obtient le module du type.
Nom Obtient le nom du type.
Espace de noms Obtient l'espace de noms du type.
Propriété La description
GetConstructors () Renvoie tous les constructeurs publics pour le Type.
GetConstructors (BindingFlags) Renvoie tous les constructeurs pour le Type avec BindingFlags spécifié.
GetFields () Renvoie tous les champs publics du Type.
GetFields (BindingFlags) Renvoie tous les constructeurs publics pour le Type avec BindingFlags spécifié.
GetMembers () Renvoie tous les membres publics du type.
GetMembers (BindingFlags) Renvoie tous les membres du Type avec BindingFlags spécifié.
GetMethods () Renvoie toutes les méthodes publiques pour le Type.
GetMethods (BindingFlags) Renvoie toutes les méthodes du Type avec BindingFlags spécifié.
GetProperties () Renvoie toutes les propriétés publiques du Type.
GetProperties (BindingFlags) Renvoie toutes les propriétés du Type avec BindingFlags spécifié.
GetType () Obtient le Type actuel.
GetType (chaîne) Obtient le Type pour le nom donné.

Exemples de réflexion:

Obtenir le type

Exemple:

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

//Production:

System.Int32

Obtenir l'assemblage

Exemple:

en utilisant System en utilisant System.Reflection classe publique GetAssembly {public static void Main () {Type t = typeof (System.String) Console.WriteLine (t.Assembly)}}

//Production:

System.Private.CoreLib, Version = 4.0.0.0, Culture = neutre, PublicKeyToken = 7cec85d7bea7798e

Informations sur le type d'impression

Exemple:

utilisant System utilisant System.Reflection classe publique 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)}}

//Production:

Vrai
Faux
Faux

Constructeurs d'impression

Exemple:

using System using 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 dans ci) {Console.WriteLine (c)}}}

//Production:

Constructeurs de type System.String ...
Vide .ctor (car [])
Void .ctor (Char [], Int32, Int32)
Vide .ctor (car *)
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])

Méthodes d'impression

Exemple:

using System using 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)}}}

//Production:

Méthodes de type System.String ...
System.String Remplacer (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) ......

Imprimer les champs

Exemple:

using System using 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)}}}

//Production:

Champs de type System.String ...
System.String vide

Maintenant, passons à quelques concepts avancés de programmation C #

Concepts avancés de C #

Fonction anonyme

La fonction qui n'a pas de nom spécifique est appelée Anonyme Les fonctions. Il existe deux types de fonctions anonymes disponibles en C #

  • Expressions lambda
  • Méthodes anonymes

Exemple:

using System namespace 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)}}}

//Production:

Carré: 625

Méthodes anonymes

La méthode anonyme fournit les mêmes fonctionnalités qu'un expression lambda, sauf que cela nous permet d'ignorer la liste des paramètres.

Exemple:

using System namespace AnonymousMethods {class Program {public delegate void AnonymousFun () static void Main (string [] args) {AnonymousFun fun = delegate () {Console.WriteLine ('This is anonymous function')} fun ()}}}

//Production:

C'est une fonction anonyme

Multi-filetage

Le multithreading est un processus dans lequel plusieurs threads sont créés et affectés à différentes tâches. cela permet de gagner du temps en exécutant plusieurs travaux à la fois. La classe multithreading est disponible dans System.Threading espace de noms.

Espace de noms System.Threading

La System.Threading namespace contient des classes et des interfaces pour faciliter le multithreading. Il fournit des classes pour synchroniser la ressource de thread. Une liste des classes couramment utilisées est donnée ci-dessous:

  • Fil
  • Mutex
  • Minuteur
  • Moniteur
  • Sémaphore
  • ThreadLocal
  • ThreadPool
  • Volatil

Processus et fil

Le processus est en fait et application et il est considéré comme un poids lourd composant. D'autre part, le fil est un seul module de l'ensemble de l'application. Il est poids léger par rapport au processus

Le cycle de vie d'un fil

Chaque fil a un cycle de vie. Le cycle de vie du thread est défini dans la classe System.Threading.Thread. Voici les étapes du cycle de vie de n'importe quel thread.

  • Non démarré
  • Runnable (prêt à fonctionner)
  • Fonctionnement
  • Non exécutable
  • Morte

La classe Thread fournit les propriétés et méthodes suivantes comme suit.

Propriétés du fil

Propriété La description
CurrentThread renvoie l'instance du thread en cours d'exécution.
Est vivant vérifie si le thread actuel est actif ou non.
IsBackground Pour obtenir / définir la valeur du thread actuel est en arrière-plan ou non.
ManagedThreadId est utilisé pour obtenir l'identifiant unique du thread actuellement géré.
Nom est utilisé pour obtenir ou définir le nom du thread actuel.
Priorité est utilisé pour obtenir ou définir la priorité du thread actuel.
ThreadState est utilisé pour renvoyer une valeur représentant l'état du thread.

Méthodes de filetage

Méthode La description
Avortement() est utilisé pour terminer le thread. Il déclenche ThreadAbortException.
Interrompre() est utilisé pour interrompre un thread qui est dans l'état WaitSleepJoin.
Joindre() est utilisé pour bloquer tous les threads appelants jusqu'à ce que ce thread se termine.
ResetAbort () est utilisé pour annuler la demande d'abandon du thread en cours.
CV() est utilisé pour reprendre le thread suspendu. C'est obsolète.
Veille (Int32) est utilisé pour suspendre le thread actuel pendant les millisecondes spécifiées.
Début() change l'état actuel du thread en Runnable.
Suspendre() suspend le thread actuel s'il n'est pas suspendu. C'est obsolète.
Rendement() est utilisé pour céder l'exécution du thread actuel à un autre thread.

Exemple de filetage principal

utilisant System utilisant System.Threading classe publique Edureka {public static void Main (string [] args) {Thread t = Thread.CurrentThread t.Name = 'MainThread' Console.WriteLine (t.Name)}}

//Production:

MainThread

Gestion des exceptions

La exception est une erreur lancée par le programme lors de son exécution. Nous effectuons la gestion des exceptions afin de rendre notre programme sans exception.

Exception La description
System.DivideByZeroException Erreur générée en divisant un nombre par zéro.
System.NullReferenceException gère l'erreur générée en référençant l'objet nul.
System.InvalidCastException gère l'erreur générée par un transtypage non valide.
System.IO.IOException gère les erreurs d'entrée / sortie.
System.FieldAccessException Erreur générée par un accès privé / protégé non valide.

En C #, nous utilisons 4 mots-clés pour effectuer gestion des exceptions:

  • essayer
  • capture
  • enfin, et
  • jeter
Exemple:
using 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 ('Ce message provient du bloc catch')}}

//Production:

System.DivideByZeroException: tentative de division par zéro.
à ExExaEdurekample.Main (String [] args) dans F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: ligne 10
Ce message provient du bloc catch

Exemple d'exception personnalisée

using System public class InvalidAgeException: Exception {public InvalidAgeException (String message): base (message) {}} public class Customized {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.') } } 

//Production:

InvalidAgeException: Désolé, l'âge devrait être supérieur à 18
à Customized.validate (âge Int32) dans F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: ligne 18
à Customized.Main (String [] args) dans F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: ligne 23
Le bloc Catch est en cours d'exécution.

Enfin un exemple de bloc

using 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)} finally {Console .WriteLine ('Le bloc final est exécuté')} Console.WriteLine ('Le bloc de capture est exécuté')}}

//Production:

System.DivideByZeroException: tentative de division par zéro.
à FinalExecption.Main (String [] args) dans F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: ligne 10
Enfin le bloc est exécuté
Le bloc de capture est exécuté

Signature d'exception système

[SerializableAttribute] [ComVisibleAttribute (true)] classe publique SystemException: Exception

Constructeurs d'exceptions système

Constructeur La description
SystemException () Il est utilisé pour initialiser une nouvelle instance de la classe SystemException.
SystemException

(SerializationInfo, StreamingContext)

Il est utilisé pour initialiser une nouvelle instance de la classe SystemException avec des données sérialisées.
SystemException (chaîne) Il est utilisé pour initialiser une nouvelle instance de la classe SystemException avec un message d'erreur spécifié.
SystemException (chaîne, exception) Il est utilisé pour initialiser une nouvelle instance de la classe SystemException avec un message d'erreur spécifié et une référence à l'exception interne qui est la cause de cette exception.

Propriétés d'exception système

Propriété La description
Les données Il est utilisé pour obtenir une collection de paires clé / valeur qui fournissent des informations supplémentaires définies par l'utilisateur sur l'exception.
HelpLink Il est utilisé pour obtenir ou définir un lien vers le fichier d'aide associé à cette exception.
HResult Il est utilisé pour obtenir ou définir HRESULT, une valeur numérique codée affectée à une exception spécifique.
InnerException Il est utilisé pour obtenir l'instance d'exception qui a provoqué l'exception actuelle.
Message Il est utilisé pour obtenir un message décrivant l'exception en cours.
La source Il est utilisé pour obtenir ou définir le nom de l'application à l'origine de l'erreur.
Trace de la pile Il est utilisé pour obtenir une représentation sous forme de chaîne des trames immédiates sur la pile d'appels.
TargetSite Il est utilisé pour obtenir la méthode qui lève l'exception actuelle.

Méthodes d'exception système

Méthodes La description
Equals (objet) Il est utilisé pour vérifier que l'objet spécifié est égal ou non à l'objet courant.
Finaliser() Il est utilisé pour libérer des ressources et effectuer des opérations de nettoyage.
GetBaseException () Il est utilisé pour obtenir une exception racine.
GetHashCode () Il est utilisé pour obtenir le code de hachage.
GetObjectData

(SerializationInfo, StreamingContext)

Il est utilisé pour obtenir des données d'objets.
GetType () Il est utilisé pour obtenir le type d'exécution de l'instance actuelle.
MemberwiseClone () Il est utilisé pour créer une copie superficielle de l'objet courant.
ToString () Il est utilisé pour créer et renvoyer une représentation sous forme de chaîne de l'exception actuelle.

Exemple d'exception système

utilisation de l'espace de noms System CSharpProgram {class SystemExceptionExample {static void Main (string [] args) {try {int [] arr = new int [5] arr [10] = 25} catch (SystemException e) {Console.WriteLine (e)} }}}

//Production:

System.IndexOutOfRangeException: L'index était en dehors des limites du tableau.
à CSharpProgram.SystemExceptionExample.Main (String [] args) dans F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: ligne 11

Synchronisation

La synchronisation peut être une technique qui permet à un seul thread d'accéder à la ressource pendant une durée spécifique. Aucun thread alternatif ne s'interrompra tant que le thread désigné n'aura pas terminé sa tâche.

Dans le programme multithreading, les threads sont autoriséspour accéder à toute ressource pour leexécution spécifiéetemps. Les threads partagent des ressources et s'exécutent de manière asynchrone. Accéder aux ressources partagées (données)peut être une tâche importanteque généralementpourrait s'arrêterle système.nous avons tendance à l'influenceren créant des threads de manière synchrone.

Exemple sans synchronisation

en utilisant System en utilisant System.Threading classe 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() } } 

//Production:

un
un
2
2
3
3
4
4
5
5
6
6
sept
sept
8
8
9
9
dix
dix

Exemple avec synchronisation

en utilisant System en utilisant System.Threading classe 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() } } 

//Production:

un
2
3
4
5
6
sept
8
9
dix
un
2
3
4
5
6
sept
8
9
dix

Nouvelles fonctionnalités

Microsoft a ajouté de nombreuses dernières fonctionnalités au langage C #, dont certaines sont mentionnées ci-dessous.

C # 6.0

  • Utilisation de la directive statique
  • Filtres d'exception
  • Attendre dans les blocs catch / finally
  • Initialiseurs de propriétés automatiques
  • Valeurs par défaut pour les propriétés en lecture seule
  • Membres au corps d'expression
  • Propagateur nul
  • Interpolation de chaîne
  • Nom de l'opérateur
  • Initialiseur de dictionnaire
  • Compilateur en tant que service (Roslyn)

C # 7.0

  • Correspondance de motif
  • Tuples
  • Déconstruction
  • Fonctions locales
  • Séparateur de chiffres
  • Littéraux binaires
  • Ref retours et locaux
  • Constructeurs et finaliseurs à corps d'expression
  • Getters et setters à corps d'expression
  • Variables de sortie
  • Types de retour asynchrones généralisés

C # 7.1

  • Async principal
  • Expressions par défaut

Questions d'entrevue basées sur C #

Les questions d'entretien importantes basées sur le langage de programmation C # peuvent être trouvées dans cette mise à jour .

Avec cela, nous arrivons à la fin de cet article «Tutoriel C #». J'espère que vous avez compris l'importance des structures de données, de la syntaxe, des fonctionnalités et des opérations effectuées en les utilisant. Maintenant que vous avez compris les bases de la programmation en C # à travers ceTutoriel C #, Vérifiez formation fournie par Edureka sur de nombreuses technologies comme Java, Printemps et beaucoupplus, une entreprise de formation en ligne de confiance avec un réseau de plus de 250000 apprenants satisfaits répartis dans le monde question pour nous? Mentionnez-le dans la section commentaires de ce blog «Tutoriel C #» et nous vous répondrons dans les plus brefs délais.