« Programmation C sharp/Les espaces de noms » : différence entre les versions

Contenu supprimé Contenu ajouté
Aucun résumé des modifications
m Formatage, ajout de code
Ligne 17 :
 
== Utiliser les membres d'un espace de nom ==
Les classes définies à l'intérieur de cet espace de noms peuvent se faire référence par leur nom simple : <ttcode>ClasseUne</ttcode>, <ttcode>ClasseDeux</ttcode>.
 
Une classe membre d'un autre espace de nom ou d'aucun doit forcément utiliser le nom absolu des classes, c'est à dire : <ttcode>MesClasses.ClasseUne</ttcode>, <ttcode>MesClasses.ClasseDeux</ttcode> ou bien utiliser la directive using :
using ''namespace'';
Exemple :
Ligne 39 :
}
</source>
L'exemple du chapitre "[[Programmation C sharp/Un premier programme|Un premier programme]]" utilise déjà un espace de nom : la classe <ttcode>Console</ttcode> est définie dans l'espace de noms <ttcode>System</ttcode>.
 
== Imbrication des espaces de noms ==
Ligne 90 :
 
== Alias d'espace de nom ==
Le mot clé <ttcode>using</ttcode> peut servir à assigner un autre nom (plus court en général) à un espace de nom.
 
Exemple :
Ligne 117 :
</source>
 
Si l'instruction <ttcode>using</ttcode> est utilisée deux fois, le nom <ttcode>Ligne</ttcode> est ambigu, comme l'explique l'erreur produite par le compilateur :
<source lang="csharp">
using Gestion.Transport;
Ligne 130 :
</source>
 
Dans ce cas, on peut utiliser l'instruction <ttcode>using</ttcode> pour l'un des deux espaces de nom et utiliser le nom complet pour l'autre espace de nom :
<source lang="csharp">
using Gestion.Transport;
Ligne 156 :
Il est possible que le code source utilise des noms déjà utilisé comme espace de noms.
 
Dans l'exemple de code suivant, les noms <ttcode>System</ttcode> et <ttcode>Console</ttcode> font référence à des attributs de la classe <ttcode>Classe</ttcode>.
<source lang="csharp">
public class Classe
Ligne 170 :
</source>
 
Il est toutefois possible d'utiliser <ttcode>System.Console</ttcode> en utilisant le préfixe <ttcode>global::</ttcode> qui permet de spécifier que l'on accède à l'espace de nom racine de tous les autres (implicite par défaut) :
<source lang="csharp">
public class Classe
Ligne 187 :
Lorsqu'une application utilise des assemblages dont les noms de classes complets (espace de nom inclus) sont identiques (deux versions/implémentations d'une même classe), l'ambiguïté doit être résolue en utilisant des alias d'assemblages.
 
Pour utiliser deux versions d'une même classe définies dans les assemblages <ttcode>grid.dll</ttcode> (version 1.0, alias "GridV1") et <ttcode>grid20.dll</ttcode> (version 2.0, alias "GridV2"), il faut définir les alias à utiliser dans la ligne de commande de compilation :
{{Programmation C sharp/Commande|windows=csc /r:GridV1=grid.dll /r:GridV2=grid20.dll ...|mono=gmsc -r:GridV1=grid.dll -r:GridV2=grid20.dll ...}}
 
Cela crée les alias externes GridV1 et GridV2. Pour utiliser ces alias à partir d'un programme, il faut les référencer à l'aide du mot clé <ttcode>extern</ttcode> :
 
<source lang="csharp">
Ligne 197 :
</source>
 
Ces deux instructions créent deux nouvelles racines d'espace de nom en plus de <ttcode>global</ttcode> :
<source lang="csharp">
extern alias GridV1;