Aller au menu - Aller au contenu

Icône Utiliser le framework .NET

Mise à jour : 02/02/2012
Difficulté : Facile Facile Creative Commons BY-NC-SA
22 955 visites depuis 7 jours, dont 554 sur ce chapitre classé 15/786
Comme on l'a déjà évoqué, le framework .NET est une énorme boîte à outils qui contient beaucoup de méthodes permettant de construire toutes sortes d'applications.
Nous allons avoir besoin régulièrement d'utiliser les éléments du framework .NET pour réaliser nos applications. Il est donc grand temps d'apprendre à savoir le manipuler !

Rentrons tout de suite dans le vif du sujet.
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

L’instruction using

Nous allons sans arrêt solliciter la puissance du framework .NET. Par exemple, nous pouvons lui demander de nous donner la date courante.

Pour ce faire, on utilisera l’instruction :

Code : C#
1
Console.WriteLine(DateTime.Now);


Ce qu’il se passe ici, c’est que nous demandons à notre application l’affichage de la propriété Now de l’objet DateTime. Nous allons revenir en détail sur ce que sont des propriétés et des objets, considérez pour l’instant qu’ils correspondent simplement à une instruction qui nous fournit la date du moment.

Ce qui donne :

Image utilisateur


En fait, pour accéder à la date courante, on devrait normalement écrire :

Code : C#
1
System.Console.WriteLine(System.DateTime.Now);



Car les objets DateTime et Console se situent dans l’espace de nom « System ».

Un espace de nom (en anglais namespace) correspond à un endroit où l’on range des méthodes et des objets. Il est caractérisé par des mots séparés par des points (.).

C’est un peu comme des répertoires, nous pouvons dire que le fichier « DateTime » est rangé dans le répertoire « System » et quand nous souhaitons y accéder nous devons fournir l’emplacement complet du fichier, à savoir System.DateTime.

Cependant, plutôt que d’écrire le chemin complet à chaque fois, il est possible de dire : « ok, maintenant, à chaque fois que je vais avoir besoin d’accéder à une fonctionnalité, va la chercher dans l’espace de nom « System ». Si elle s’y trouve, utilise la ».

C’est ce qu’il se passe grâce à l’instruction

Code : C#
1
using System;


qui a été générée par Visual C# express au début du fichier.

Elle indique au compilateur que nous allons « utiliser » (using) le namespace System dans notre page. Ainsi, il n’est plus obligatoire de préfixer l’accès à DateTime par « System. ». C’est une espèce de raccourci.
Pour conserver l’analogie avec les répertoires et les fichiers, on peut dire que nous avons ajouté le répertoire « System » dans le path.

Pour résumer, l’instruction :

Code : C#
1
System.Console.WriteLine(System.DateTime.Now);


est équivalente aux deux instructions :

Code : C#
1
using System;


et
Code : C#
1
Console.WriteLine(DateTime.Now);


Sachant qu’elles ne s’écrivent pas côte à côte. En général, on met l’instruction using en entête du fichier .cs, comme ce qu’a fait Visual C# express lorsqu’il a généré le fichier. L’autre instruction étant à positionner à l’endroit adéquat où nous souhaitons qu’elle soit exécutée.

Si le « using System » est absent, la complétion automatique de Visual C# express ne vous proposera pas le mot « DateTime ». C’est un bon moyen de se rendre compte qu’il manque la déclaration de l’utilisation de l’espace de nom.


À noter que dans ce cas-là, si Visual C# express reconnait l’instruction mais que l’espace de nom n’est pas inclus, il le propose en soulignant le début du mot « DateTime » d’un petit trait bleu et blanc.

Image utilisateur


Un clic droit sur le mot permettra d’ouvrir un menu déroulant, de choisir « Résoudre » et d’importer le using correspondant automatiquement.

Image utilisateur


La bibliothèque de classes .NET

Vous aurez l’occasion de découvrir que le framework .NET fourmille d’espace de noms contenant plein de méthodes de toutes sortes permettant de faire un peu tout et n’importe quoi. Une vraie caverne d’ali-baba.

Parmi les nombreuses fonctionnalités du framework .NET, nous avons une méthode qui nous permet de récupérer l’utilisateur courant (au sens « utilisateur windows »), on pourra par exemple utiliser l’instruction suivante :

Code : C#
1
System.Console.WriteLine(System.Environment.UserName);



Qui nous affichera :

Image utilisateur


Ou, comme vous le savez désormais, on pourra utiliser conjointement :

Code : C#
1
using System;


et

Code : C#
1
Console.WriteLine(Environment.UserName);


Pour produire le même résultat.

Petit à petit vous allez retenir beaucoup d’instructions et d’espaces de nom du framework .NET mais il est inimaginable de tout retenir. Il existe une documentation répertoriant tout ce qui compose le framework .NET, c’est ce qu’on appelle la MSDN library. Elle est accessible à cette adresse : http://msdn.microsoft.com/fr-fr/library/.

Par exemple, la documentation de la propriété que nous venons d’utiliser est consultable à cette adresse.

Nous avons désigné la caverne d’ali-baba par le mot « framework .NET ». Pour être plus précis, la désignation exacte de cette caverne est : « la bibliothèque de classe .NET ». Le mot « framework .NET » est en général utilisé par abus de langage (et vous avez remarqué que j’ai moi-même abusé du langage !) et représente également cette bibliothèque de classe. Nous reviendrons plus tard sur ce qu’est exactement une classe, pour l’instant, vous pouvez voir ça comme des composants ; une bibliothèque de composants.

Référencer une assembly

Ca y est, nous savons accéder au framework .NET.

Mais d’ailleurs, comment se fait-il que nous puissions accéder aux méthodes du framework .NET sans nous poser de question ? Il est magique ce framework ? Où se trouve le code qui permet de récupérer la date du jour ?

Judicieuse question. Si on y réfléchit, il doit falloir beaucoup de code pour renvoyer la date du jour ! Déjà, il faut aller la lire dans l’horloge système, il faut peut-être l’adapter au fuseau horaire, la formater d’une façon particulière en fonction de la langue, etc. Tout ça est déjà fait, heureusement, dans la bibliothèque de méthodes du framework .NET.

Alors, où est-elle cette bibliothèque ? Et le reste ?

Dans des assemblys bien sûr. Comme on a vu, les assemblys possèdent des fragments de code compilés en langage intermédiaire. S’ils sont réutilisables, ils se trouvent dans des fichiers dont l’extension est .dll.

Le framework .NET est composé d’une multitude d’assemblys qui sont installés sur votre système d’exploitation, dans le GAC (global assembly cache) qui est un endroit où sont stockées ces assemblys afin de les rendre accessible depuis nos programmes.
Pour pouvoir utiliser ces assemblys dans notre programme, nous devons indiquer que nous voulons les utiliser. Pour ça, il faut les référencer dans le projet.
Si l’on déplie les références dans notre explorateur de solutions, nous pouvons voir que nous avons déjà pas mal de références qui ont été ajoutées par Visual C# express :

Image utilisateur



Ce sont des assemblys qui sont très souvent utilisées, c’est pour ça que Visual C# express nous les a automatiquement référencées. Toujours ce souci de nous simplifier le travail, qu’il est sympa !

Prenons par exemple la référence System.Xml. Son nom nous suggère que dedans est réuni tout ce qu’il nous faut pour manipuler le XML.
Commençons à taper System.Xml., la complétion automatique nous propose plusieurs choses.

Image utilisateur

On ne sait pas du tout à quoi elle sert, mais déclarons par exemple une variable de l’énumération ConformanceLevel :

Code : C#
1
System.Xml.ConformanceLevel level;


et compilons. Pas d’erreur de compilation.
Si vous supprimez la référence à System.Xml. (bouton droit, Supprimer),

Image utilisateur


et que vous compilez à nouveau, vous pouvez voir que ConformanceLevel est désormais souligné en rouge, signe qu’il y a un problème.

Image utilisateur


Par ailleurs, la compilation provoque l’erreur suivante :

Citation : Compilateur
Le type ou le nom d'espace de noms 'ConformanceLevel' n'existe pas dans l'espace de noms 'System.Xml' (une référence d'assembly est-elle manquante ?)


Loin d’être bête, Visual C# express nous affiche un message d’erreur plutôt explicite.

En effet, cette énumération est introuvable car elle est définie dans une assembly qui n’est pas référencée. C’est comme si on nous demandait de prendre le marteau pour enfoncer un clou, mais que le marteau n’est pas à coté de nous, mais au garage bien rangé !
Il faut donc référencer le marteau afin de pouvoir l’utiliser.
Pour ce faire, faisons un clic sur Références et ajoutons une référence.

Image utilisateur


Ici, nous avons plusieurs onglets (selon la version de Visual Studio que vous possédez, vous aurez peut-être une présentation légèrement différente).

Image utilisateur



Chaque onglet permet d’ajouter une référence à une assemblys.
  • L’onglet .NET permet de référencer une assembly présente dans le GAC, c’est ici que nous viendrons chercher les assemblys du framework .NET
  • L’onglet COM permet de référencer une dll COM. Vous ne savez pas ce qu’est COM ? On peut dire que c’est l’ancêtre de l’assembly. Techniquement, on ne référence pas directement une dll COM, mais Visual C# express génère ce qu’on appelle un wrapper permettant d’utiliser la dll COM. Un wrapper est en fait une espèce de traducteur permettant d’utiliser la dll COM comme si c’était une assembly. Mais ne nous attardons pas sur ce point qui ne va pas nous servir, nous qui sommes débutants.
  • L’onglet Projets permet de référencer des assemblys qui se trouvent dans notre solution. Dans la mesure où notre solution ne contient qu’un seul projet, l’onglet sera vide. Nous verrons plus tard comment utiliser cet onglet lorsque nous ajouterons des assemblys à nos solutions.
  • L’onglet Parcourir va permettre de référencer une assembly depuis un emplacement sur le disque dur. Cela peut-être une assembly tierce fournie par un collègue, ou par un revendeur, etc …
  • Enfin, l’onglet Récent, comme son nom le suggère, permet de référencer des assemblys récemment référencées.

Retournons à nos moutons, repartons sur l’onglet .NET et recherchons l’assembly que nous avons supprimée, à savoir System.Xml.

Image utilisateur


Une fois trouvée, appuyez sur OK. Maintenant que la référence est ajoutée, nous pouvons à nouveau utiliser cette énumération…

Ouf ! :-°

Je ne comprends pas, j’ai supprimé toutes les références, mais j’arrive quand même à utiliser la date, le nom de l’utilisateur ou la méthode Console.WriteLine. Si j’ai bien compris, je ne devrais pas pouvoir utiliser des méthodes dont les assemblys ne sont pas référencées… C’est normal ?


Eh oui, il existe une assembly qui n’apparait pas dans les références et qui contient tout le cœur du framework .NET. Cette assembly doit obligatoirement être référencée, il s’agit de mscorlib.dll. Comme elle est obligatoire, elle est référencée par défaut dès que l’on crée un projet.

D’autres exemples

Il arrivera souvent que vous ayez besoin d’une fonctionnalité trouvée dans la documentation ou sur internet et qu’il faille ajouter une référence.
Ce sera peut-être une référence au framework .NET, à des bibliothèques tierces ou à vous. Nous verrons plus loin comment créer nos propres bibliothèques.

Dans la documentation MSDN, il est toujours indiqué quelle assembly il faut référencer pour utiliser une fonctionnalité. Prenons par exemple la propriété DateTime.Now, la documentation nous dit :

Citation : MSDN
Espace de noms : System
Assembly : mscorlib (dans mscorlib.dll)


Cela veut donc dire qu’on utilise la date du jour en utilisant l’assembly obligatoire mscorlib et la fonctionnalité se trouve dans l’espace de nom « System », comme déjà vu.

Il n’y a donc rien à faire pour pouvoir utiliser DateTime.Now.
En imaginant que nous ayons besoin de faire un programme qui utilise des nombres complexes, vous allez surement avoir besoin du type Complex, trouvé dans la documentation.

Pour l’utiliser, comme indiqué, il va falloir référencer l’assembly System.Numerics.dll.
Rien de plus simple, répétons la procédure pour référencer une assembly et allons trouver System.Numerics.dll :

Image utilisateur



Ensuite, nous pourrons utiliser par exemple le code suivant :

Code : C#
1
2
3
4
5
6
Complex c = Complex.One;
Console.WriteLine(c);
Console.WriteLine("Partie réelle : " + c.Real);
Console.WriteLine("Partie imaginaire : " + c.Imaginary);

Console.WriteLine(Complex.Conjugate(Complex.FromPolarCoordinates(1.0, 45 * Math.PI / 180)));

Sachant qu’il aura bien sûr fallu rajouter le :

Code : C#
1
using System.Numerics;


permettant d’avoir à éviter de préfixer Complex par System.Numerics. Mais ça, vous aviez trouvé tout seul, n’est-ce pas ? :)
Ce qui nous donnera :

Image utilisateur

Q.C.M.

A quoi sert le mot clé using ?
Combien d’assemblys sont disponibles dans le framework .NET ?
A quoi sert de référencer une assembly ?

Statistiques de réponses au QCM

En résumé


  • Le framework .NET est un ensemble d'assemblys qu'il faut référencer dans son projet afin d'avoir accès à leurs fonctionnalités.
  • On utilise le mot-clé using pour inclure un espace de nom comme raccourci dans son programme, ce qui permet de ne pas avoir à préfixer les types de leurs espaces de noms complets.
Chapitre précédent Sommaire Chapitre suivant

Partager

1 commentaire pour "Utiliser le framework .NET"
Note moyenne : 3.05 / 4 (230 votes)
Pseudo Commentaire
Hors ligne siriusx # Posté le 22/02/2012 à 14:39:26

Avis : Très bon

Études : Heig-VD

Merci pour le tuto :-)

Voir tous les commentaires