Programmation C sharp/Les commentaires
Tout bon programme a des fichiers sources bien commentés pour expliquer comment cela fonctionne et pourquoi certains choix ont été faits. Ce qui évite une perte de temps lorsque le code source est repris et modifié, soit par un autre développeur, soit par l'auteur qui ne se souvient pas forcément de son projet s'il n'y a pas touché depuis longtemps.
Bloc de commentaire.
Un bloc de commentaire est délimité par les signes slash-étoile codice_1 et étoile-slash codice_2 comme en Java et en C++. Exemple :
 Un commentaire explicatif
 sur plusieurs lignes...
Les blocs ne peuvent être imbriqués car dès que le compilateur trouve slash-étoile codice_1, il recherche la première occurrence d'étoile-slash codice_2 terminant le commentaire.
/* : début du commentaire
 /* : ignoré
 fin du commentaire : */
erreur ici car le commentaire est fini : */
Commentaire de fin de ligne.
Un commentaire de fin de ligne débute par un double slash codice_5 et se termine au prochain retour à la ligne. Exemple :
x++; // augmenter x de 1
Le commentaire ne doit pas paraphraser le code, mais expliquer le rôle de cette partie du code, comme par exemple :
x++; // décaler le point d'un pixel vers la droite
Astuce : Visual Studio utilise ce type de commentaire pour les commandes commenter/décommenter le groupe de lignes sélectionnées (raccourcis claviers : pour commenter, pour décommenter, ou et avec les versions de Visual Studio .NET antérieures à 2005).
Commentaire de documentation.
Le langage C# utilise une forme spéciale des commentaires pour documenter les classes. Ces commentaires commencent par un triple slash codice_6 et se terminent au prochain retour à la ligne. Alternativement, ils peuvent être encadrés par codice_7 et codice_2.
Le contenu de ces commentaires est au format XML. Il est possible d'utiliser plusieurs lignes. Cette documentation se rapporte toujours à un des éléments de la déclaration qui suit.
Exemple :
/// <summary>
/// Une classe pour démontrer
/// les commentaires de documentation
/// </summary>
public class Exemple
 ...
Certaines balises XML sont standards, mais il est possible d'utiliser des balises supplémentaires. Pour plus de détails, voir le chapitre nommé Documentation XML des classes.

Programmation C sharp/Les espaces de noms

Définition.
Un espace de nom regroupe plusieurs déclarations sous un même nom ajouté à ceux des éléments déclarés (classes, interfaces, espace de nom imbriqué).
Exemple :
namespace MesClasses
 public class ClasseUne
 public class ClasseDeux
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 : codice_1, codice_2.
Une classe membre d'un autre espace de nom ou d'aucun doit forcément utiliser le nom absolu des classes, c'est à dire : codice_3, codice_4 ou bien utiliser la directive using :
 using "namespace";
Exemple :
using MesClasses;
public class ClasseTest
 ClasseUne objet1;
 ClasseDeux objet2;
Équivaut à :
public class ClasseTest
 MesClasses.ClasseUne objet1;
 MesClasses.ClasseDeux objet2;
L'exemple du chapitre "Un premier programme" utilise déjà un espace de nom : la classe codice_5 est définie dans l'espace de noms codice_6.
Imbrication des espaces de noms.
L'imbrication des espaces de noms est possible :
namespace MesClasses
 namespace Calcul
 ... // espace de nom MesClasses.Calcul
Ou directement :
namespace MesClasses.Calcul
 ... // espace de nom MesClasses.Calcul
Espace de noms en plusieurs parties.
Plusieurs fichiers sources peuvent contribuer à ajouter des déclarations à un même espace de noms.
Exemple :
using System;
namespace Exemple.Graphisme
using System;
namespace Exemple.Graphisme
Alias d'espace de nom.
Le mot clé codice_7 peut servir à assigner un autre nom (plus court en général) à un espace de nom.
Exemple :
using coll = System.Collections;
public class Exemple
 coll::Hashtable donnees = new coll::Hashtable();
Créer un alias d'espace de nom est également utile pour utiliser deux classes portant le même nom, situées dans deux espaces de nom différents.
Exemple :
namespace Gestion.Transport
namespace Graphique.Dessin
Si l'instruction codice_7 est utilisée deux fois, le nom codice_9 est ambigu, comme l'explique l'erreur produite par le compilateur :
using Gestion.Transport;
using Graphique.Dessin;
public class Exemple
 Ligne exemple;
 // -> error CS0104: 'Ligne' is an ambiguous reference between
 // 'Gestion.Transport.Ligne' and 'Graphique.Dessin.Ligne'.
Dans ce cas, on peut utiliser l'instruction codice_7 pour l'un des deux espaces de nom et utiliser le nom complet pour l'autre espace de nom :
using Gestion.Transport;
public class Exemple
 Ligne transport;
 Graphique.Dessin.Ligne trace;
Il est également possible de définir deux alias d'espace de nom afin d'abréger les références :
using transport=Gestion.Transport;
using dessin=Graphique.Dessin;
public class Exemple
 transport::Ligne transport;
 dessin::Ligne trace;
Conflit de nom.
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 codice_6 et codice_5 font référence à des attributs de la classe codice_13.
public class Classe
 private string System = "system";
 private string Console = "console";
 public void Afficher()
 // System.Console.WriteLine("Exemple"); // provoque une erreur
Il est toutefois possible d'utiliser codice_14 en utilisant le préfixe codice_15 qui permet de spécifier que l'on accède à l'espace de nom racine de tous les autres (implicite par défaut) :
public class Classe
 private string System = "system";
 private string Console = "console";
 public void Afficher()
 global::System.Console.WriteLine("Exemple"); // OK
Alias d'assemblages.
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 codice_16 (version 1.0, alias "GridV1") et codice_17 (version 2.0, alias "GridV2"), il faut définir les alias à utiliser dans la ligne de commande de compilation :
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é codice_18 :
extern alias GridV1;
extern alias GridV2;
Ces deux instructions créent deux nouvelles racines d'espace de nom en plus de codice_19 :
extern alias GridV1;
extern alias GridV2;
public class Exemple
 GridV1::Grid grid_v1; // implémentation V1.0 (grid.dll)
 GridV2::Grid grid_v2; // implémentation V2.0 (grid20.dll)

Programmation C sharp/Les types de base et les déclarations