Cours C#
A. MADANI
abdellah_madani@[Link]
Cours .NET avec C# 1
Plan
Introduction à .NET
C# : Programmation de base
C# : Programmation Orientée Objet
C# : Tableaux, Chaînes de caractères et les
collections
C# : Applications Windows
C# : Architecture [Link]
Cours .NET avec C# 2
Introduction à .NET
Cours .NET avec C# 3
Compilation VS Interprétation
- Compilation -
Avantages
Rapidité
Inconvénient
Manque de portabilité
Rigidité
Cours .NET avec C# 4
Compilation VS Interprétation
- Interprétation -
Avantages
Portabilité
Souplesse
Inconvénient
Lenteur
Cours .NET avec C# 5
Compilation VS Interprétation
- byte code -
Avantages
Portabilité
Souplesse
Inconvénient
lenteur
Cours .NET avec C# 6
Introduction
.NET :
Plateforme de développement d’application
Sortie en Juin 2000
But :
Accélérer le processus de développement d’applications
Distribuer sur Internet les applications produites
Composée de deux composants principaux :
Common Language Runtime (CLR)
Bibliothèque .NET Framework
Cours .NET avec C# 7
Common Language Runtime
Semblable à la machine virtuelle de Java
Dans .NET :
Le programme compilé ne peut être exécuté
directement sur une machine
Le programme est compilé en un code
intermédiaire, MicroSoft Intermediate Language
(MSIL ou IL)
Pour exécuter le code IL, on a besoin du CLR
Cours .NET avec C# 8
Common Language Runtime
Avantages :
Portabilité : le code IL peut s’exécuter sur
n’importe qu’elle machine disposant du CLR
Prise en charge de plusieurs langages : le CLR
supporte plusieurs langages, VB, C#, APL,
Cobol, Eiffel, Perl, Smalltalk, …
Programmation interlangages : une classe écrite
dans un langage peut être utilisée par d’autres
langages
Cours .NET avec C# 9
Bibliothèque de classes
Vaste collection de classes permettant
d’accélérer le développement d’applications
Les classes ayant les mêmes fonctionnalités
sont regroupées en espaces de noms
(namespaces)
Une classe ne peut dériver que d’une seule
classe (pas d’héritage multiple)
Toutes les classes ont un parent commun (super
classe) : la classe ‘Object’
Cours .NET avec C# 10
Bibliothèque de classes
Comporte plusieurs
couches :
Les unes abstraites
Les autres exécutables
Cours .NET avec C# 11
La première couche
Common Langage Specification (CLS)
Contient les règles auxquelles doivent se
conformer tous les langages .NET
Permet l’interopérabilité entre les langages
.NET
Cours .NET avec C# 12
La deuxième couche
Ensemble de composants graphiques
disponibles dans Visual Studio .NET
Permettent de construire des IHM orientées
Web (services Web)
Applications classiques avec IHM.
Cours .NET avec C# 13
La troisième couche
Constituée d'une vaste librairie de plusieurs
centaines de classes
Ces classes sont accessibles à tous les
langages de .NET
Cette librairie a la même fonction que la
bibliothèque des classes de Java.
Cours .NET avec C# 14
La troisième couche
La librairie de classe de
.NET Framework est
organisée en nom
d'espace hiérarchisés
Exemple ci-dessous de
quelques espaces de
nom de la hiérarchie
System :
Cours .NET avec C# 15
La troisième couche
Un nom complet de classe comporte le
"chemin" hiérarchique de son espace de nom
et se termine par le nom de la classe
Par exemple :
La classe DataSet qui se trouve dans l'espace de
noms "[Link]" se déclare comme
"[Link]".
La classe Console qui se trouve dans l'espace de
noms "System" se déclare comme
"[Link]".
Cours .NET avec C# 16
La quatrième couche
Common Language Runtime (CLR) :
Environnement d'exécution commun de tous
les programmes s'exécutant dans .NET.
Le CLR exécute un bytecode écrit dans un
langage intermédiaire (MSIL)
Cours .NET avec C# 17
La quatrième couche
Un programme C# est compilé en deux
passages :
le premier est dû à l'utilisation du compilateur
C# produisant exécutable portable en
bytecode MSIL,
le second est le compilateur JIT qui traduit à
chaque appel de méthode, le bytecode MSIL
en instructions du processeur de la plate-
forme.
Cours .NET avec C# 18
La quatrième couche
Cours .NET avec C# 19
Langage C#
Programmation de base
Cours .NET avec C# 20
Introduction
C# est un langage orienté objet
Créé par Microsoft pour fonctionner avec la plateforme
.NET
Utilisé pour créer des applications qui s’exécutent dans le
[Link]
Permet de créer plusieurs types d’applications :
Application console exécutées à partir d’une ligne de
commande
Applications Windows intégrant des contrôles (boutons,
menus, …)
Applications Web pouvant être visualisées à partir de
n’importe quel navigateur Web
etc
Cours .NET avec C# 21
Introduction
Nous traitons C# d 'abord comme un langage
de programmation classique.
Nous aborderons les objets, les applications
Windows et les bases de données
ultérieurement.
La programmation classique s'efforce à
séparer les données des instructions :
des données
les instructions qui les manipulent
Cours .NET avec C# 22
Les données de C#
C# utilise les types de données suivants:
les nombres entiers
les nombres réels
les caractères et chaînes de caractères
les booléens
les objets
Cours .NET avec C# 23
Exemple d’une application Console
using System;
class Program
{
public static void Main(string[] args)
{
[Link]("C’est un test");
[Link]();
}
}
Cours .NET avec C# 24
Types simples
En C# chaque variable doit être déclarée
avant d’être utilisée
La déclaration d’une variable se fait selon la
syntaxe suivante :
Type_de données nom_variable;
C # fournit plusieurs types de données
Cours .NET avec C# 25
Types simples : entiers
Type Codage Valeurs admises
sbyte 1 octet -128 et 127
byte 1 octet 0 et 255
short 2 octets -32768 et 32767
unshort 2 octets 0 et 65535
int 4 octets -2147483648 et 2147483647
uint 4 octets 0 et 4294967296
long 8 octets –9223372036854775808 et
9223372036854775807
ulong 8 octets 0 et 18446744073709551615
Cours .NET avec C# 26
Types simples : réels
Type Codage Valeurs admises
float 4 octets 1.5 10-45 et 3.4 10+38
double 8 octets 5.0 × 10-324 et 1.7 10+308
decimal 16 octets 1.0 10-28 et 7.9 10+28
Cours .NET avec C# 27
Types simples : autres
Type Valeurs admises
char Caractère
bool Booléen (true ou false)
string Chaîne de caractères
Cours .NET avec C# 28
Types simples : entiers
Type Alias
sbyte [Link]
byte [Link]
short System.Int16
unshort System.UInt16
int System.Int32
uint System.UInt32
long System.Int64
ulong System.UInt64
Cours .NET avec C# 29
Types simples : réels
Type Alias
float [Link]
double [Link]
decimal [Link]
Cours .NET avec C# 30
Types simples : autres
Type Alias
char [Link]
bool [Link]
string [Link]
Cours .NET avec C# 31
Exemples
Int x=12;
char a='A', b='b‘;
String x="c:\\chap1\\paragraph3"
String x=@"c:\chap1\paragraph3"
bool v1=true, v2=false;
Datetime date= new DateTime(1954,10,13);
Cours .NET avec C# 32
Boxing / Unboxing
Les opérations implicites de boxing/unboxing
se font sur les types suivants :
int Int32
long Int64
decimal Decimal
bool Boolean
char Char
byte Byte
float Float
double Double
enum Enum
Cours .NET avec C# 33
Séquences d’échappement
Chaîne ayant une signification particulière :
\’ : guillemet simple (quôte)
\ » : guillemet
\\ : barre oblique inverse
\a : alerte
\n : retour à la ligne
\f : saut de page
\t : tabulation horizontale
\v : tabulation verticale
Cours .NET avec C# 34
Conversion de types
En java, on dispose de trois types de
conversions :
Conversion implicite
Conversion explicite (cast)
Conversion en utilisant des méthodes
Cours .NET avec C# 35
Conversion implicite de types
On peut faire une conversion d’une manière implicite.
Exemples :
int a=6;//le type int est codé sur 32 bits
long b=a; //le type long est codé sur 64 bits
Dans cet exemple, le sur-casting se fait
implicitement
Cours .NET avec C# 36
Conversion implicite de types
Conversion implicite est aussi appelé
conversion élargissante (pas de perte
d’information). Elle permet de passer de :
byte : short,ushort,int,uint,long,ulong,float,double,decimal
sbyte:short,int,long,float,double,decimal
short: int, long, float, double, decimal
ushort:int,uint, long,ulong, float, double, decimal
int : long, float, double,decimal
long : float, double,decimal
ulong : float, double,decimal
float : double
char : ushort,int,uint, long,ulong, float, double, decimal
Cours .NET avec C# 37
Conversion explicite de types
Un casting explicite peut être effectué
simplement en faisant précéder la valeur par
l'indication du nouveau type entre
parenthèses.
Exemples :
double d=97.564;
float f=(float)d;
int i=(int)f;
Cours .NET avec C# 38
Conversion explicite de types
Cette conversion est appelée aussi conversion
rétrécissante (perte d’informations)
byte: char
short: char, byte
char: short, byte
int: char, short, byte
long: int, char, short, byte
float: long, int, char, short, byte
double: float, long, int, char, short, byte
Cours .NET avec C# 39
Conversion explicites à l’aide de Convert
C# fournit des méthodes qui permettent de
convertir des chaînes en nombres
L’opération de conversion peut échouer dans
le cas où la chaîne contient des données non
numériques
On trouve, les méthodes de la forme :
[Link](chaîne), Où XXX : indication du type destinataire
[Link](chaîne), où
type:int,Int32,long,Int64,double,Double,float,Float
Ces méthodes font partie de l’espace de
noms System
Cours .NET avec C# 40
Conversion explicites à l’aide de Convert
Commande Résultat
[Link](val) val convertie en bool
[Link](val) val convertie en byte
[Link](val) val convertie en char
[Link](val) val convertie en decimal
[Link](val) val convertie en double
Convert.ToInt16(val) val convertie en short
Convert.ToInt32(val) val convertie en int
Cours .NET avec C# 41
Conversion à l’aide des méthodes de
Convert
Commande Résultat
Convert.ToInt64(val) val convertie en long
[Link](val) val convertie en sbyte
[Link](val) val convertie en float
[Link](val) val convertie en string
Convert.ToUInt16(val) val convertie en ushort
Convert.ToUInt32(val) val convertie en uint
Convert.ToUInt64(val) val convertie en ulong
Cours .NET avec C# 42
Conversion l’aide des méthode de Parse
Commande Résultat
[Link](chaine) chaîne convertie en Int32
[Link] chaîne convertie en Int32
[Link](chaine) chaîne convertie en Int64
[Link] chaîne convertie en Int64
[Link](chaîne) chaîne convertie en Double
[Link](chaîne) chaîne convertie en Double
[Link](chaîne) chaîne convertie en Float
[Link](chaîne) chaîne convertie en Float
Cours .NET avec C# 43
Conversion l’aide des méthode de Parse
La conversion d'une chaîne vers un nombre peut
échouer si la chaîne ne représente pas un nombre.
Il y a alors génération d'une erreur fatale appelée
exception en C#.
Cette erreur peut être gérée par la clause try/catch :
try{
appel de la fonction susceptible de générer l'exception
}catch (Exception e){
traiter l'exception e
}
instruction suivante
Cours .NET avec C# 44
Opérateurs et expressions
Une expression est une combinaison de
variables et ou de constantes
La combinaison se fait à l’aide d’opérateurs
On distingue trois catégories d’opérateurs :
Unaires : appliqués à une seule opérande
Binaires : appliqués à deux opérandes
Ternaires : appliqués à trois opérandes
Cours .NET avec C# 45
Opérateurs mathématiques
Opérateur Catégorie Utilisation
+ binaire v1=v2 + v3
- Binaire v1=v2 - v3
* Binaire v1=v2 * v3
/ Binaire v1=v2 / v3
% Binaire v1=v2 % v3
Cours .NET avec C# 46
Opérateurs mathématiques
Opérateur Catégorie Utilisation
+ Unaire v1=+ v3
- Unaire v1=- v3
++ Unaire v1=++v3,
v1=v3++
-- Unaire v1=--v3
v1==v3--
Cours .NET avec C# 47
Opérateurs d’affectation
Opérateur Catégorie Utilisation
= Binaire v=w
+= Binaire v+=w (v=v+w)
-= Binaire v-=w (v=v-w)
*= Binaire v*=w (v=v*w)
/= Binaire v/=w (v=v/w)
%= Binaire v%=w (v=v%w)
Cours .NET avec C# 48
Opérateurs relationnels
Opérateur Catégorie Utilisation
== Binaire v==w
!= Binaire v!=w
< Binaire v<w
<= Binaire v<=w
> Binaire v>w
>= binaire v>=w
Cours .NET avec C# 49
Opérateurs logiques
Opérateur Catégorie Utilisation
! Unaire var1=!var2
&& Binaire var1=var2&&var3
|| Binaire var1=var2||var3
^ binaire var1=var2^var3
Cours .NET avec C# 50
Opérateurs par priorité
Opérateurs unaires ++exp,--exp,+exp,-exp, !
Multiplicatifs *, /, %
Additifs +, -
Relationnels <, <=, >, >=
Égalité ==, !=
Et logique &&
Ou logique ||
affectation =, +=, -=, *=, /=, %=
Cours .NET avec C# 51
Opérateurs
Les opérateurs les plus prioritaires sont
évalués en premier
Deux opérateurs de même priorité sont
évalués de gauche à droite, à l’exception des
opérateurs d’affectation qui sont évalués de
droite à gauche
Cours .NET avec C# 52
Lecture/écriture
La classe [Link] donne accès aux
opérations de lectures / écriture :
[Link]() affiche
[Link]() affiche et
passe à la ligne suivante
[Link]() lit un caractère
et retourne son code
[Link]() lit une ligne
et retourne une chaîne de caractères
Cours .NET avec C# 53
Lecture/écriture
Remarque :
Au lieu de donner la spécification complète des
méthodes de lecture écriture, on peut l’espace des
noms System, ainsi :
[Link]();
Est équivalent à
Using System;
…
[Link]()
Cours .NET avec C# 54
Structures de contrôle
L'instruction conditionnelle if
if (expression) instruction;
ou :
if (expression) {
instruction1;
instruction2;
}
L'instruction conditionnelle else
if (expression) {
instruction1;
}else {
instruction2;
}
Cours .NET avec C# 55
Structures de contrôle
Les instructions conditionnelles
imbriquées
if (expression1) {
bloc1;
}
else if (expression2) {
bloc2;
}
else if (expression3) {
bloc3;
}
else {
bloc5;
}
Cours .NET avec C# 56
Structures de contrôle
L'instruction switch
switch( variable) {
case valeur1: instructions1;break;
case valeur2: instructions2;break;
case valeur3: instructions2;break;
.
.
case valeurN: instructionsN;break;
default: instructions;break;
}
Cours .NET avec C# 57
Structures de contrôle
La boucle for
La boucle for est une structure employée pour exécuter un bloc
d'instructions un nombre de fois en principe connu à l'avance. Elle
utilise la syntaxe suivante :
for (initialisation;test;incrémentation) {
instructions;
}
Exemple :
int i = 0;
for (i = 2; i < 10;i++) {
[Link]("Vive Java !");
}
Cours .NET avec C# 58
Structures de contrôle
Branchement au moyen des instructions break et continue
break:
int x = 10;
for (int i = 0; i < 10; i++) {
x--;
if (x == 5) break;
}
[Link](x);
continue:
for (int i = 0; i < 10; i++) {
if (i == 5) continue;
[Link](i);
}
Cours .NET avec C# 59
Structures de contrôle
L ’instruction While Exemple :
int s=0,i=O;
while (condition){ while (i<10){
BlocInstructions; s+=i;
} i++;
}
L ’instruction do ..
while
Exemple :
do int s=0,i=O;
BlocInstructions; do{
while (condition) s+=i;
i++;
}
while (i<10)
Cours .NET avec C# 60
Langage C#
Programmation Orienté Objet
Cours .NET avec C# 61
Approches orientées objet
(Rappel)
Approches classiques
Séparation nette entre les données et les
procédures de traitement de ces données
Au moindre changement des données, il faut
modifier les procédures de manipulation de
ces données
Cours .NET avec C# 62
Approches orientées objet
(Rappel)
Approches classiques
Difficulté de maintenance !!
Solution : Approche Orienté Objet
Cours .NET avec C# 63
Approches orientées objet
(Rappel)
Programme : ensemble d’objets indépendants
communicant par envoi de messages
Lorsqu’un objet désire une information d’un autre
objet, il lui envoi un message
Les messages sont le seul moyen de
communication entre objets
Un objet regroupe ses données et les procédures
de manipulation de ces données
Cours .NET avec C# 64
Approches orientées objet
(Rappel)
Programme = ensemble d’objets
Objet = données + procédure
Communication = envoi de message
Cours .NET avec C# 65
Approches orientées objet
(Rappel)
L’orienté objet repose sur trois concepts de
base :
Le concept de structuration en utilisant les objets
et les classes
Le concept de communication par envoi de
messages
Le concept de construction par affinage avec
l’héritage.
Cours .NET avec C# 66
Approches orientées objet
(Rappel)
Un objet est une entité
Autonome (ayant des limites bien définies)
Ayant une existence propre
Ayant un sens dans le domaine étudié
Un objet regroupe à la fois
Des données (attributs)
Des procédures (opérations)
Notion d’Encapsulation
Cours .NET avec C# 67
Approches orientées objet
(Rappel)
Données
} •Partie statique, passive
•Partie cachée, privée
Traitement
} •Partie dynamique, comportementale
•Partie visible, publique
•Interface avec l’extérieur
User Cours .NET avec C# 68
Approches orientées objet
(Rappel)
Les données de l’objet constituent sa partie
privée, càd la partie cachée
Les opérations est la partie accessible
depuis l’extérieur : pour accéder aux
données de l’objet on est obligé de passer
par les méthodes
Interface de l’objet
Cours .NET avec C# 69
Approches orientées objet
(Rappel)
Plusieurs objets peuvent avoir des données
et des comportements (opérations) en
commun
Il devient nécessaire de les regrouper dans un
modèle général : classe d’objets
Une classe est un ensemble d’objets ayant
les mêmes données et les mêmes opérations
Cours .NET avec C# 70
Approches orientées objet
(Rappel)
Une classe est un moule à partir de laquelle
on crée (instancie) des objet
les objets sont des instances d’une classe
L’instanciation est la création d’un objet d’une
classe
Cours .NET avec C# 71
Approches orientées objet
(Rappel)
Personne
Code
Nom
Classe d’objets (classe)
Adresse
parler()
marcher()
Instance
Instance
320
120
Benabbou
El Hachimi Objets
110, Avenue …
32, Rue …
Cours .NET avec C# 72
Approches orientées objet
(Rappel)
Remarques
Classe : modèle général
Objets :
cas particuliers
Instances
occurrences
Cours .NET avec C# 73
Approches orientées objet
(Rappel)
Les objets communiquent par envoi de messages
Envoyer un message à un objet, c’est lui demander un service
Lorsqu’un objet reçoit un message :
Soit le message correspond à un traitement défini dans la
classe de l’objet auquel cas la méthode correspondante est
exécutée.
Soit le message ne correspond pas, l’objet refuse le
message et signale une erreur
Cours .NET avec C# 74
Approches orientées objet
(Rappel)
Compte
N°Compte
Solde
déposer()
retirer()
avoirSolde()
Instance
Instance
AB320
C120
1370,50
5000
déposer 1000 retirer 500
Cours .NET avec C# 75
Généralisation / Spécialisation et héritage
La généralisation est la relation entre une
classe et une ou plusieurs de ses versions
raffinées.
On appelle la classe dont on tire les
précisions la super-classe et les autres
classes les sous-classes.
C’est une relation de type « est un (is a) » ou
« est une sorte de ».
Cours .NET avec C# 76
Généralisation / Spécialisation et héritage
La classe spécialisée (sous-classe)
hérite les méthodes et les attributs de la
classe générale (super-classe)
peut ajouter ses propres attributs et
méthodes.
peut redéfinir le comportement d’une
méthode, mais pas des attributs.
Cours .NET avec C# 77
Généralisation / Spécialisation et héritage
Compte
- N°Compte : String
- Solde : float
+ <<Constructor>> Compte ()
+ Déposer (float Somme) : void
+ Retirer (float Somme) : float
+ AvoirSolde () : String
Dans la classe CompteEpargne :
•N°Compte et Solde : hérités
•Déposer(), Retirer() : héritées
•avoirSolde() est une méthode redéfinie
CompteEpargne
- Taux : float
+ AvoirSolde () : String
Cours .NET avec C# 78
Interprétation des messages
Lorsqu’un objet reçoit un message :
Si sa classe contient une méthode de même
nom, elle sera exécutée
Sinon, on remonte dans la hiérarchie à la
recherche d’une méthode de même nom.
Cours .NET avec C# 79
Interprétation des messages
Exemple
Soit CE une instance de la classe
CompteEpargne :
C.déposer() : fait appel à la méthode ‘déposer’ de
la classe ‘Compte’
[Link]() : fait appel à la méthode
‘avoirSolde’ de la classe ‘CompteEpargne’
Cours .NET avec C# 80
Généralisation / Spécialisation et héritage
Remarques
La généralisation et la spécialisation sont deux
façons pour voir la même relation, top-down
(spécialisation) ou bottom-up (généralisation).
L'héritage est l’implémentation de la relation de
la généralisation/spécialisation.
Une classe Java ne peut hériter que d’une seule
classe.
Cours .NET avec C# 81
Généralisation / Spécialisation et héritage
Personnes
- Code : int
- Nom : String
+ <<Constructor>> Personnes (int Code, String Nom)
+ getNom () : String
+ getInf () : String
Spécialisation Super classe, classe mère
Généralisation
Etudiants
- Salaire : float
+ <<Constructor>> Etudiants (int Code, String Nom, float Salaire)
+ getInf () : String
+ getSalaire () : float
Employes
Sous classes - Filiere : String
Classes filles + <<Constructor>> Employes (int Code, String Nom, String Filiere)
Classes dérivées + getInf () : String
+ getFiliere
Cours .NET avec C# () : String 82
Création d'une classe
class Compte{
//déclaration des données (privées)
private String NCompte;
private float Solde;
…
Cours .NET avec C# 83
Création d'une classe
class Compte{
…
//Déclaration des méthodes (publics)
public Compte(String n, float s){NCompte=n;Solde=s;}
public void deposer(float somme){Solde+=somme;}
public void retirer(float somme){
if (Solde<somme)
[Link](«Solde insuffisant ! »);
else
Solde-=somme;
}
public float avoirSolde(){return Solde;}
}
Cours .NET avec C# 84
Création d'une classe
Les données sont généralement privées.
Les méthodes sont généralement publiques
(interface)
Le constructeur est une méthode spéciale :
Porte le même nom que la classe
Utilisée pour initialiser les objets
Ne retourne aucune valeur, même void
Invoquée implicitement au moment de la création des
objets
On peut avoir plusieurs constructeurs
Cours .NET avec C# 85
Création d'objets (instances)
class test{
public static void Main(String arg[]){
Compte c1=new Compte("C120",5000);
Compte c2;
c2=new Compte("AB320",1370.50);
float s=[Link]; Erreur, car …
float s1=[Link]();
[Link]("Solde "+s1);
[Link](500);
[Link]("Solde "+[Link]());
…
}
}
Cours .NET avec C# 86
Création d'objets (instances)
Le mot clé this désigne l’objet courant (l’objet qui
fait appel à la méthode)
Par exemple
public void deposer(float somme){
/*augmenter le solde de l’objet faisant appel à la méthode
déposer()*/
[Link]+=somme;
}
…
Compte c1=new Compte(100,3500)
[Link](2000); // this indique l’objet c1
Cours .NET avec C# 87
Création d'objets (instances)
Remarque
Le mot clé this est obligatoire lorsqu’il y a conflit
entre un attribut de classe et un argument de la
méthode utilisant cet attribut
Par exemple :
public Compte(String NCompte, float Solde){
[Link]=NCompte;
[Link]=Solde;
}
Argument de la méthode
Attribut de la classe
Cours .NET avec C# 88
Données de classes/d'instances
Une donnée (attribut ou méthode) peut être :
Donnée d'instance, propre à l'objet
Donnée de classe, partagée entre tous les
objets de la classe
Cours .NET avec C# 89
Données de classes/d'instances
Une donnée d'instances
Attribut : chaque objet possède sa propre
valeur
Méthode : invoquée en faisant référence à
l'objet
Cours .NET avec C# 90
Données de classes/d'instances
Une donnée de classe (déclaration précédée
du mot clé "static)
Attribut : partagée entre tous les objets de la
classe.
Méthode : invoquée en précisant la classe à
la place de l'objet
Cours .NET avec C# 91
Données statiques
class Personne{
//attributs d'instances
private int Code;
private String Nom;
//attribut de classe (statique)
private static int NbreEmp;
…
}
Cours .NET avec C# 92
Données statiques
class Personne{
…
public Personne(int code, String nom){
NbrePers++;Code=code;Nom=nom;
}
public String getInf(){
return "Code "+Code+"\nNom "+Nom;
}
public static int getNbre(){
return NbrePers;
}
}
Cours .NET avec C# 93
Données statiques
class test{
public static void Main(String arg[]){
Personne p=new Personne(10, "A. B");
Personne q=new Personne(20, "I. I");
[Link]([Link]());
[Link]([Link]());
[Link]([Link]());
[Link]([Link]());
}
Cours .NET avec C# 94
Notion d'héritage
L’héritage est le mécanisme de partage des
informations entre objets tout en préservant
leurs différences
Cours .NET avec C# 95
Notion d'héritage
Personnes
- Code : int
- Nom : String
+ <<Constructor>> Personnes (int Code, String Nom)
+ getNom () : String
+ getInf () : String
Etudiants
- Code : int
- Nom : String
- Salaire : float
+ <<Constructor>> Etudiants (int Code, String Nom, float Salaire)
+ getNom () : String
+ getInf () : String
+ getSalaire () : float
Employes
- Code : int
- Nom : String
- Filiere : String
+ <<Constructor>> Employes (int Code, String Nom, String Filiere)
+ getNom () : String
+ getInf () : String
+ getFiliere ()Cours .NET avec C# : String 96
Notion d'héritage
Personnes
- Code : int
- Nom : String
+ <<Constructor>> Personnes (int Code, String Nom)
+ getNom () : String
+ getInf () : String
Spécialisation Super classe, classe mère
Généralisation
Etudiants
- Salaire : float
+ <<Constructor>> Etudiants (int Code, String Nom, float Salaire)
+ getInf () : String
+ getSalaire () : float
Employes
Sous classes - Filiere : String
Classes filles + <<Constructor>> Employes (int Code, String Nom, String Filiere)
Classes dérivées + getInf () : String
+ getFiliere
Cours .NET avec C# () : String 97
Notion d'héritage
class Personne{
private int Code;
private String Nom;
public Personne(int code, String nom){
Code=code; Nom=nom;
}
public String getNom(){
return Nom;
}
public String getInf(){
return "Code :"+Code +"\nNom : Nom";
}
}
Cours .NET avec C# 98
Notion d'héritage
class Employe : Personne{
private float Salaire;
public Employe(int code, String nom, float salaire):base(code,nom){
Salaire=salaire;
}
public float getSalaire(){
return Salaire;
}
public String getInf(){
String inf=[Link]();
Inf=inf + "\nSalaire :"+Salaire;
return Inf;
}
}
Cours .NET avec C# 99
Notion d'héritage
class Etudiant : Personne{
private float Salaire;
public Etudiant(int code, String nom, String filiere):base(code,nom){
Filiere=filiere;
}
public float getFilere(){
return Filiere;
}
public String getInf(){String inf=[Link]();
Inf=inf + "\nFiliere :"+Filiere;
return Inf;
}
}
Cours .NET avec C# 100
Notion d'héritage
Trois type de visibilités de données
Privée : donnée visible que par les méthodes de
la classe
Protégée : donnée visible que par les méthodes
de la classes et des sous classes directes
Internal : donnée visible dans tous le projet
Publique : donnée visible depuis n'importe quelle
méthode
Cours .NET avec C# 101
Langage C#
Chaînes de caractères, tableaux et
collections
Cours .NET avec C# 102
Les tableaux de données
Un tableau C# est un objet qui rassemble des
données de même type
Sa déclaration peut se faire de deux façons :
Type[] Tableau=new Type[n], n est le nombre de données
que peut contenir le tableau.
Type[] Tableau=new Type[]{val1,val2,val3, ., .};
Tableau[i] désigne la donnée n°i où i appartient à
l'intervalle [0,n-1].
Les tableaux ont une propriété Length qui est le
nombre d'éléments du tableau.
Cours .NET avec C# 103
Les tableaux de données
Toute référence à la donnée Tableau[i] où i n'appartient
pas à l'intervalle [0,n-1] provoquera une exception.
Il y a alors génération d'une erreur fatale appelée
exception en C#.
Cette erreur peut être gérée par la clause try/catch :
try{
appel de la fonction susceptible de générer l'exception
}catch (Exception e){
traiter l'exception e
}
instruction suivante
Cours .NET avec C# 104
Le type String
Le type de données String n'est pas un type
élémentaire en C#, c'est une classe.
Une chaîne est un objet qui n'est utilisable
qu'à travers les méthodes de la classe String.
La classe String est identique au type simple
string. Elle présente de nombreuses
propriétés et méthodes. En voici quelques-
unes :
Cours .NET avec C# 105
La classe String
public int Length() : longueur d’une chaîne
public bool EndsWith(string value): vrai si la
chaîne se termine par value
public bool StartsWith(string value) : vrai si la
chaîne commence par value
public bool Equals(object obj) : rend vrai si la
chaînes est égale à obj (équivalent chaîne==obj)
public int IndexOf(string value, int startIndex) : la
première position dans la chaîne de la chaîne value
(la recherche commence à partir du caractère n°
startIndex)
Cours .NET avec C# 106
La classe String
public int IndexOf(char value, int startIndex) :
idem mais pour le caractère value
public string Insert(int startIndex, string value) :
insère la chaîne value dans chaîne en position
startIndex
public static string Join(string separator, string[]
value) : méthode de classe - rend une chaîne de
caractères, résultat de la concaténation des valeurs
du tableau value avec le séparateur separator
public int LastIndexOf(char value, int startIndex,
int count)
Cours .NET avec C# 107
La classe String
public int LastIndexOf(string value, int
startIndex, int count) : idem indexOf mais rend la
dernière position au lieu de la première
public string Replace(char oldChar, char
newChar) : rend une chaîne copie de la chaîne
courante où le caractère oldChar a été remplacé par
le caractère newChar
public string[] Split(char[] separator) : la chaîne
est vue comme une suite de champs séparés par
les caractères présents dans le tableau separator.
Le résultat est le tableau de ces champs
Cours .NET avec C# 108
La classe String
public string Substring(int startIndex, int length)
: sous-chaîne de la chaîne courante commençant à
la position startIndex et ayant length caractères
public string ToLower() : rend la chaîne courant en
minuscules
public string ToUpper() : rend la chaîne courante
en majuscules
public string Trim() : rend la chaîne courante
débarassée de ses espaces de début et fin
Cours .NET avec C# 109
Collections : la classe ArrayList
La classe ArrayList permet d'implémenter
des tableaux de taille variable au cours de
l'exécution du programme, ce que ne permet
pas les tableaux précédents.
Voici quelques-unes des propriétés et
méthodes courantes :
Cours .NET avec C# 110
Collections : la classe ArrayList
Nom Description
ArrayList() construit un tableau vide
int Count nombre d'éléments du tableau
int Add(object value); ajoute l'objet value à la fin du tableau
void AddRange(Collection ajoute la collection (peut être un
c) tableau) à la fin du tableau
void Clear() efface le tableau
Cours .NET avec C# 111
Collections : la classe ArrayList
Nom Description
int IndexOf(object value); indice de l'objet value dans le
tableau ou -1 s'il n'existe pas
int IndexOf(object value, int idem mais en cherchant à partir de
startIndex); l'élément n° startIndex
int LastIndexOf(object value); idem mais rend l'indice de la
int LastIndexOf(object value, int dernière occurrence de value dans
startIndex); le tableau
Cours .NET avec C# 112
Collections : la classe ArrayList
Nom Description
void Remove(object obj); enlève l'objet obj s'il existe dans le
tableau
void RemoveAt(int index); enlève l'élément i du tableau
int BinarySearch(object rend la position de l'objet value dans le
value) tableau ou -1 s'il ne s'y trouve pas. Le
tableau doit être trié
void Sort() trie le tableau. Celui-ci doit contenir
des objets ayant une relation d'ordre
prédéfinie (chaînes, nombres)
void Sort(comparer) trie le tableau selon la relation d'ordre
établie par la fonction comparer
Cours .NET avec C# 113
ArrayList
static void afficheVector (ArrayList vect)
{
[Link]( "Vecteur taille = " + [Link] );
for ( int i = 0; i<= [Link]-1; i++ )
[Link]( "Vecteur[" + i + "]=" + (string)vect[ i ] );
}
static void VectorInitialiser ( )
{
ArrayList table = new ArrayList( );
string str = "val:";
for ( int i = 0; i<=5; i++ )
[Link](str + [Link]( ) );
afficheVector(table);
}
Cours .NET avec C# 114
SortedList
Si l'on souhaite gérer une liste triée par clef, il
est possible d'utiliser la classe SortedList
Cette classe représente une collection de
paires valeur-clé
Cette liste est triée par les clés toutes
différentes et accessibles par clé et par index
Cours .NET avec C# 115
SortedList
int Add( object key,object value ):Ajoute un élément
avec la clé key et la valeur value spécifiées dans le
SortedList.
void CopyTo( Array array,int arrayIndex ):Copie les
éléments du SortedList dans une instance Array
array unidimensionnelle à l'index arrayIndex spécifié
(valeur de l'index dans array où la copie
commence).
void Clear( ):Supprime tous les éléments de
SortedList.
object GetByIndex( int index ):Obtient la valeur à
l'index spécifié de la liste SortedList.
Cours .NET avec C# 116
SortedList
object GetKey( int index ):Obtient la clé à l'index
spécifié de SortedList.
int IndexOfValue( object value ):Retourne l'index de
base zéro de la première occurrence de la valeur
value spécifiée dans SortedList.
int IndexOfKey( object key ):Retourne l'index de
base zéro de la clé key spécifiée dans SortedList.
void Remove( object key ):Supprime de SortedList
l'élément ayant la clé key spécifiée.
void RemoveAt( int index ):Supprime l'élément au
niveau de l'index spécifié de SortedList.
Cours .NET avec C# 117
SortedList
SortedList Liste = new SortedList ( );
[Link](100,"…");[Link](45,"…");
for (int i=0; i<[Link]; i++) //Balayage par index :
[Link]( (string)[Link](i) );
foreach(string s in [Link]) //Balayage des valeurs :
[Link]( s );
foreach(object k in [Link]) //Balayage des clefs :
[Link]( Liste[k] );
Cours .NET avec C# 118
Pile
La classe Stack représente une pile LIFO (Last In
First Out)
Elle présente plusieurs méthodes :
object Peek ( ):Renvoie la référence de l'objet situé au
sommet de la pile.
object Pop( ):Dépile la pile (l'objet au sommet est enlevé et
renvoyé)
void Push( object elt ):Empile un objet au sommet de la pile.
object [ ] ToArray( ):Recopie toute la pile dans un tableau
d'objet depuis le sommet jusqu'au fond de la pile (dans
l'ordre du dépilement).
Cours .NET avec C# 119
File
La classe Queue représente une file FIFO (First In
First Out)
Elle dispose de plsieurs méthodes :
object Peek ():Renvoie la référence de l'objet situé au
sommet de la file.
object Dequeue():L'objet au début de la file est enlevé et
renvoyé.
void Enqueue (object elt):Ajoute un objet à la fin de la file.
object [ ] ToArray():Recopie toute la file dans un tableau
d'objet depuis le début de la file jusqu'à la fin de la file.
Cours .NET avec C# 120
Langage C#
Applications Windows
Cours .NET avec C# 121
Introduction
La plupart des contrôles de .NET dérivent de la
classe :
[Link]
Plusieurs propriétés et événements sont
communs à plusieurs contrôles
Cours .NET avec C# 122
Quelques propriétés de la classe Control
Nom description
BackColor Couleur d’arrière plan
Bottom Distance entre le sommet de la fenêtre et le bas du
contrôle
Enabled Active ou désactive le contrôle
ForeColor Couleur d’avant plan du contrôle
Height Hauteur du contrôle
Left Distance entre le bord gauche de la fenêtre et le bord
gauche du contrôle
Cours .NET avec C# 123
Quelques propriétés de la classe Control
Nom description
Name Nom du contrôle
Right Distance entre le bord droit du contrôle avec le bord
gauche de la fenêtre
TabIndex Numéro que possède le contrôle dans l’ordre de
tabulations
Top Distance entre le haut du contrôle et le haut de la fenêtre
Visible Visible ou non lors de l’exécution
Width Largeur du contrôle
Cours .NET avec C# 124
Quelques événements de la classe Control
Nom description
Click Clic sur le contrôle
DoubleClick Double clic sur le contrôle
DragDrop Opération glisser-déplacer est términée
DragEnter Un objet déplacé franchit le contrôle
DragLeave Un objet déplacé quitte le contrôle
DragOver Un objet déplacé glisse sur le contrôle
Cours .NET avec C# 125
Quelques événements de la classe Control
Nom description
KeyDown Une touche est enfoncée
KeyPress Une touche clavier est enfoncée
KeyUp Une touche est relâchée
GotFocus Le contrôle reçoit le focus
LostFocus Le contrôle perd le focus
MouseDown Un bouton de la souris est enfoncée
Cours .NET avec C# 126
Quelques événements de la classe Control
Nom description
MouseMove La souris passe sur le contrôle
MouseUp Le bouton de la souris est relâchée
Paint Un contrôle est dessiné
Cours .NET avec C# 127
Contrôle Button
Trois types de boutons :
Boutons de commande : pour exécuter des
actions
Boutons radio :
Cases à cocher :
La classe Button dérive de la classe
ButtonBase qui dérive de la classe Control
Cours .NET avec C# 128
Classe Button
Nom Description
FlatStyle Style du bouton
Enabled Activé ou désactivé
Image Image sur le bouton
ImageAlign Alignement de l’image
Cours .NET avec C# 129
Contrôles Label et LinkLabel
Permettent d’afficher un texte fixe
Deux types d’étiquettes :
Label : étiquette standard de Windows
LinkLabel : étiquette se présentant sous forme
d’un lien hypertexte
Cours .NET avec C# 130
Contrôles Label et LinkLabel (quelques
propriétés)
Nom Description
BorderStyle Style de la bordure
DisabledLinkColor Couleur d’un LinkLabel visité
FlatStyle Affichage du contrôle (PopUp, par exemple)
Image Image sur le contrôle
ImageAlign Alignement de l’image
Cours .NET avec C# 131
Contrôles Label et LinkLabel (quelques
propriétés)
Nom Description
LinkArea Plage de texte à afficher comme lien
LinkColor Couleur du lien
LinkVisited Indique si un lien est visité
Text Texte du contrôle
TextAlign Alignement du texte
Cours .NET avec C# 132
Contrôle TextBox
Dérive du contrôle TextBoxBase qui dérive
de Control
Contrôle permettant la saisie et l’affichage du
texte
Le texte peut être sur une ou plusieurs lignes
Le texte peut aussi être crypté (mot de
passe)
Cours .NET avec C# 133
Contrôles TextBox (quelques propriétés)
Nom Description
CharacterCasing La casse (lower, upper, normal)
MaxLength Nombre maximum de caractères
MultiLine Indique si une zone est multiligne
PasswordChar Caractère de mot de passe
ReadOnly Lecture seule
Cours .NET avec C# 134
Contrôles TextBox (quelques propriétés)
Nom Description
ScrollBars Si une zone peut avoir des barres de défilements
SelectedText Texte sélectionné
SelectionLength Nombre de caractères sélectionné
SelectionStart Début de la sélection
WordWrap Passage automatique à la ligne
Cours .NET avec C# 135
Contrôles TextBox (quelques événements)
Nom Description
Enter/Leave Entrer et quitter une zone de texte
GotFocus/LostFocus Recevoir et perdre le focus
KeyDown/KeyUp Appuyer et relâcher une touche
KeyPress Appuyer sur un touche
Change Le contenu d’une zone change
Cours .NET avec C# 136
Contrôle Button
Trois types de boutons :
Boutons de commande : pour exécuter des
actions
Boutons radio :
Cases à cocher :
La classe Button dérive de la classe
ButtonBase qui dérive de la classe Control
Cours .NET avec C# 137
Contrôle Button
Nom Description
FlatStyle Style du bouton
Enabled Activé ou désactivé
Image Image sur le bouton
ImageAlign Alignement de l’image
Cours .NET avec C# 138
Contrôle RadioButton/CheckBox
(quelques propriétés)
Nom Description
Appearance Apparence du bouton (texte affiché à droite, …)
AutoCheck Coché par défaut
CheckAlign Alignement du texte % au bouton
Checked État du bouton (true, false)
Cours .NET avec C# 139
Contrôle RadioButton/CheckBox
(quelques événements)
Nom Description
CheckChanged Changement de l’état d’un bouton radio
Click Clic avec la souris
Cours .NET avec C# 140
Contrôles ListBox et CheckedListBox
Permettent à l’utilisateur de faire un ou
plusieurs choix en même temps
Ressemblent aux cases à cocher et aux
boutons radio
ListBox dérive du contrôle ListControl qui
dérive lui-même de Control
CheckedListBox dérive de ListBox
Cours .NET avec C# 141
Contrôle ListBox/CheckedListBox
(quelques propriétés)
Nom Description
SelectedIndex Indice de l’élément sélectionné (0, … ou -1)
ColumnWidth Valide pour une liste multi colonne
Items Éléments de la liste
MultiColumn Définie ou récupérer le nombre de colonnes
SelectedIndices Les indices des éléments sélectionnés
SelectedItem Élément sélectionné
Cours .NET avec C# 142
Contrôle ListBox/CheckedListBox
(quelques propriétés)
Nom Description
SelectedItems Les éléments sélectionnés
SelectionMode None : aucun élément ne peut être sélectionné
One : un seul élément peut être sélectionné
MultiSimple : plusieurs élément peuvent être
sélectionnés
MultiExtended : comme MultiSimple, mais on peut
utiliser CTRL et MAJ
Cours .NET avec C# 143
Contrôle ListBox/CheckedListBox
(quelques propriétés)
Nom Description
Sorted Trie alphabétique
Text Permet de sélectionner un texte ou récupère le
premier élément de la liste
CheckedIndices Les indices des éléments cochés de
CheckedListBox
CheckedItems Les éléments cochés de CheckedListBox
Cours .NET avec C# 144
Contrôle ListBox/CheckedListBox
(quelques méthodes)
Nom Description
ClearSelected Efface toutes les séléctions de la liste
FindString Renvoie la 1ère chaine de la liste commençant par la
chaine passée en argument
FindStringExact Comme FindString, mais la chaîne doit correspondre
en totalité
GetSelected Renvoie une valeur indiquant si un élément est
sélectionné
SetSelected Définit ou efface la sélection d’un élément
Cours .NET avec C# 145
Contrôle ListBox/CheckedListBox
(quelques méthodes)
Nom Description
ToString Renvoie l’élément couramment sélectionné
GetItemChecked Renvoie une valeur indiquant si un élément est
coché
GetItemCheckState Renvoie une valeur indiquant l’état de la case à
cocher d’un élément
SetItemChecked Définit l’élément spécifié à l’état coché
SetItemCheckState Définit l’état coché d’un élément
Cours .NET avec C# 146
Contrôle ListBox/CheckedListBox
(quelques événements)
Nom Description
Click Clic avec la souris
DoubleClick Double clic
ItemCheck État d’une case à cocher est modifié par
l’utilisateur
SelectedIndexChanged Index de l’élément sélectionné est modifié
Cours .NET avec C# 147
Contrôle ComboBox
Combine une zone de texte (TextBox) et une
liste (ListBox) il en hérite plusieurs
propriétés
Ne permet de sélectionner qu’un élément à la
fois
Il est possible de saisir une nouvelle entrée
dans la zone de texte
Cours .NET avec C# 148
Contrôle ComboBox (quelques propriétés)
Nom Description
DropDownStyle DropDown : on peut éditer la zone de texte et afficher
la liste
Simple : on peut éditer la zone de texte, mais la liste
est toujours affichée
DropDownList : on ne peut éditer la zone de texte
DroppedDown Indique si la liste est déroulante ou non
Items Contient tous les éléments de la liste
MaxLehgth Nombre maximum de caractères à saisir
Cours .NET avec C# 149
Contrôle ComboBox (quelques propriétés)
Nom Description
SelectedIndex Indice de l’élément sélectionné
SelectedItem Élément sélectionné
SelectedText Texte sélectionné
SelectionStart Début de la sélection
SelectionLength Longueur de la sélection
Sorted Tri alphabétique
Cours .NET avec C# 150
Contrôle ComboBox (quelques
événements)
Il existe trois actions principales dont on
souhaite être averti lorsqu’elles se
produisent:
La sélection est modifiée
L’état déroulant est modifié
Le texte est modifié
Cours .NET avec C# 151
Contrôle ComboBox (quelques
événements)
Nom Description
DropDown La liste est déroulée
SelectedIndexChanged La sélection dans la liste est modifiée
KeyDown Voir précédemment
KeyPress Voir précédemment
KeyUp Voir précédemment
TextChanged La propriété Text est modifiée
Cours .NET avec C# 152
Langage C#
Architecture [Link]
Cours .NET avec C# 153
Introduction
[Link] comporte deux composants
essentiels :
Les fournisseurs de données permettant un
accès en mode connecté
L’objet DataSet pour un accès en mode
déconnecté
Cours .NET avec C# 154
Introduction
Cours .NET avec C# 155
Introduction
Les fournisseurs sont employés pour :
De travailler avec un base de données en mode
connecté
Se connecter à une source de données
Interroger une source de données
L’objet DataSet permet :
De travailler avec un ensemble de données en
mode déconnecté
De manipuler des documents XML
Cours .NET avec C# 156
Fournisseurs d’accès aux données
[Link] comprend deux types de
fournisseurs de données :
OLE [Link]
pour les sources de données OLE DB
font partie de [Link]
SQL [Link]
pour les sources de données SQL Server 7 ou
postérieur
font partie de [Link]
Cours .NET avec C# 157
Fournisseurs d’accès aux données
Les objets importants dans un [Link]
Connection
Command
DataAdapter
DataReader
Elles font partie de :
[Link]
[Link]
Cours .NET avec C# 158
Fournisseurs d’accès aux données
Objet représenté [Link] [Link]
Command SqlCommand OleDbCommand
Connection SqlConnection OleDbConnection
DataAdapter SqlDataAdapter OleDbDataAdapter
DataReader SqlDataReader OleDbDataReader
Cours .NET avec C# 159
Objet Connection
Présente une connexion à une source de
données
Prend en charge les transaction
Fait partie de :
[Link]
[Link]
Cours .NET avec C# 160
Quelques propriétés
ConnectionString Chaîne de caractère utilisée pour
se connecter à la source de
données
ConnectionTimeOut Délai d’attente(secondes), avant de
générer une exception
DataBase Base de données en cours ou base
de données avec laquelle une
connexion est souhaitée
DataSource Chemin d’accès et le nom de fichier
de la source de données
Cours .NET avec C# 161
Quelques méthodes
Close() Ferme la connexion
CreateCommand() Créer et retourne un objet Command
associé à la connexion
Dispose() Détruit l’objet Connexion
Open() Ouvre une connexion avec une base
de données
Cours .NET avec C# 162
Quelques méthodes
Remarque :
L’objet Connection possède 2 constructeurs :
OleDbConnection() et OleDbConnection(String)
pour le fournisseur OleDb
SqlConnection() et SqlConnection(String) pour le
fournisseur SqlClient
Cours .NET avec C# 163
Quelques méthodes
//Soit la chaîne de connexion suivante :
String str;
str="Provider=[Link].4.0;Data
Source=…";
//Les lignes suivantes créent une connexion
OleDbConnection con;
con=new OleDbConnection();
[Link]=str;
//On peut aussi utiliser
OleDbConnection con;
con=new OleDbConnection(str);
Cours .NET avec C# 164
Objet Command
Peut représenter :
une instruction SQL
une procédure stockée sur le serveur
Fait partie de :
[Link]
[Link]
Cours .NET avec C# 165
Quelques propriétés
CommandText Instruction SQL ou nom de la procédure
stockée
CommandTimeOut Délai d'attente (secondes), avant de générer
une exception
CommandType Le type de la commande :
[Link]
[Link]
[Link]
Connection Objet Connection utilisé par l'objet Command
Cours .NET avec C# 166
Quelques méthodes
Cancel() Annule l'exécution de l'objet
Command
ExecuteNonQuery() Exécute une requête de mise à jour,
d'insertion ou de suppression et
retourne le nombre de lignes affecté
par l'opération
ExecuteReader() Exécute un requête Select et retourne
le résultat à un objet DataReader
ExecuteScalar() Exécute une requête Select et
retourne la valeur du 1er champ de la
1ère ligne
Cours .NET avec C# 167
Objet DataReader
Représente le flux d'enregistrement d'une
source de données
Le flux peut être lu en avant seulement
Fait partie de :
[Link]
[Link]
S'obtient en exécutant la méthode
ExecuteReader() de l'objet Command
Cours .NET avec C# 168
Quelques propriétés
FieldCount Le nombre de colonnes dans la ligne en
cours
IsClosed Indique si l'objet DataReader est fermé
RecordAffected Renvoie le nombre de lignes affectés
par l'exécution de la requête
Cours .NET avec C# 169
Quelques méthodes
Close() Ferme l'objet DataReader
Getxxx() Retourne la valeur de la colonne
spécifiée:GetByte(), GetInt16(), …
GetDataTypeName() Renvoie le nom du type de données
de la colonne spécifiée par un n°
GetName() Renvoie le nom de la colonne
spécifiée par un n°
Cours .NET avec C# 170
Quelques méthodes
GetOrdinal() Retourne le n° de la colonne dont le
nom est passé comme argument
NextResult() Avance l'objet DataReader au résultat
suivant
Read() Avance à l'enregistrement suivant et
retourne true s'il reste des lignes
supplémentaires, false sinon
Cours .NET avec C# 171