TUTORIEL TECHNOS .NET 
Les espaces de nom en C#
Structure fondamentale de .NET, les espaces de nom servent à agréger les modules de sémantique proche en un même bloc plus accessible, et plus simple à diffuser. (04/10/2005)
À l'instar de Java, C# dispose d'un large éventail de bibliothèques de base, implémentant les méthodes les plus courantes, et facilitant de fait le travail des développeurs. À la différence de Java, cependant, C# n'utilise pas tant des bibliothèques spécifiques au langage, mais celles conçues pour .NET, et par extension celles de tous les langages de l'architecture de Microsoft.

Là où Java utilise des paquetages, comme com.sun.java.swing, .NET base tout son système de classement des bibliothèques sur la notion d'espace de nom, ou namespace. Un namespace, physiquement, fonctionne de la même manière qu'un paquetage, à savoir qu'il s'agit d'un dossier contenant des fichiers (les bibliothèques). Il permet aux éditeurs tiers d'utiliser leurs propres espaces de nom, et d'éviter que deux bibliothèques au même nom partagent le même emplacement - donc les collisions.

Toutefois, à la différence des paquetages, les namespaces ne renseignent pas sur le stockage physique des fichiers sources. Là où com.sun.java.swing;* correspond à la hiérarchie /com/sun/java/swing/*.*, les espaces de noms de .NET, comme System.Windows.Forms, pointent simplement vers le fichier du même nom dans le dossier du framework .NET, en l'occurrence System.Windows.Forms.dll, dans le dossier C:\WINNT\Microsoft.NET\Framework\numeroDeVersion\ par exemple.

Ce fichier est appelle un assemblage (assembly), car il rassemble en un seul fichier un grand nombre de modules (le résultat de base d'une compilation .NET), et défini le contexte de ces modules. Malgré son extension, l'assemblage de .NET n'a aucun rapport avec la DLL classique du système Windows - leur fonctionnement diffère totalement.

En pratique
Accéder aux méthodes d'un espace de nom au sein d'un programme C# est des plus simples : il suffit d'utiliser la directive using au début du fichier .cs, et de donner les espaces souhaités. En règle générale, aucun programme C# ne peut se passer d'un appel vers l'espace System :

using System;
using System.Windows.Forms;
using System.Data;
using System.Data.OleDb;


Il peuvent également être directement appellé en un endroit du code, mais cela est déconseillé.

Les espaces de noms permettent d'agréger les modules de même sémantique, et autorisent donc les développeurs à créer leurs propres espaces pour les applications, directement au sein du fichier .cs. Le mot-clef est tout trouvé :

namespace MonProjet {
  using System;
  using System.Windows.Forms;
  ...
  public class MaClasse : Form {


Toute classe créée au sein de ce fichier fera partie intégrante de l'espace de nom déclaré. Par ailleurs, les autres modules ou espace de l'application pourront faire appel à cette classe, et donc ses méthodes et attributs, au travers d'un appel d'espace normal :

using MonProjet.MaClasse;

Notez qu'il est également possible d'avoir d'autres espaces au sein d'un espace de nom, afin de fournir un degré plus précis d'organisation au sein de l'espace racine.

namespace MaSociete {
  namespace MaSection {
    namespace MonProjet {
      ...
  namespace UneAutreSection {
    ...


  Forum

Réagissez dans les forums de JDN Développeurs

Enfin, dans le cas d'espaces au nom très long comme ci-dessus, il est également possible d'utiliser la directive using pour créer un alias de ce nom :

using Lapin = MaSociete.MaSection.MonProjet.MonSousProgramme.MaClasse;
 
Xavier Borderie, JDN Développeurs
 
Accueil | Haut de page
 
 





Quand achetez-vous le plus en ligne ?
Du lundi au vendredi
Le samedi
Le dimanche

Tous les sondages