Conventions des fichiers sources (C# et Java)

Mise à jour : novembre 2007

La convention d'affectation de noms pour les fichiers qui contiennent des classes C# est un peu différente de Java. En Java, tous les fichiers sources ont une extension .java. Chaque fichier source contient une déclaration de classe publique de niveau supérieur, et le nom de classe doit correspondre au nom de fichier. En d'autres termes, une classe appelée Customer déclarée avec une portée publique doit être définie dans un fichier source avec le nom Customer.java.

Le code source C# est désigné par l'extension .cs. Contrairement à Java, les fichiers sources peuvent contenir plus d'une déclaration de classe publique de niveau supérieur, et le nom de fichier ne doit pas obligatoirement correspondre à un des noms des classes.

Déclarations de niveau supérieur

En Java et C#, le code source commence par quelques déclarations de niveau supérieur dans un certain ordre. Il n'y a que peu de différences entre les déclarations faites dans les programmes Java et C#.

Déclarations de niveau supérieur en Java

En Java, vous pouvez grouper des classes avec le mot clé package. Une classe emballée doit utiliser le mot clé package dans la première ligne exécutable du fichier source. Toutes les instructions d'importation requises pour accéder aux classes dans d'autres packages viennent ensuite, suivies de la déclaration de classe, comme suit :

package Acme;
import java.io.*;
class Customer
{
    ...
}

Déclarations de niveau supérieur en C#

C# utilise le concept d'espaces de noms pour grouper de manière logique les classes connexes, à l'aide du mot clé namespace. Ceux-ci agissent de la même manière que les packages Java, et une classe portant le même nom peut apparaître dans deux espaces de noms différents. Pour accéder aux classes définies dans un espace de noms extérieur à l'espace de noms actuel, utilisez le mot clé using suivi du nom de l'espace de noms, comme suit :

using System.IO;

namespace Acme 
{
    class Customer
    {
        // ...
    }
}

Notez que les directives using peuvent être placées à l'intérieur d'une déclaration d'espace de noms, auquel cas les espaces de noms importés de ce type font partie de l'espace de noms qui les contient.

Java n'autorise pas plusieurs packages dans le même fichier source. Toutefois, C# autorise plusieurs espaces de noms dans un même fichier .cs, comme suit :

namespace AcmeAccounting
{
    public class GetDetails
    {
        // ...
    }
}

namespace AcmeFinance
{
    public class ShowDetails
    {
        // ...
    }
}

Noms qualifiés complets et alias d'espace de noms

Comme avec Java, vous pouvez accéder à des classes du .NET Framework ou d'espaces de noms définis par l'utilisateur, sans utiliser de référence using à cet espace de noms, mais en fournissant le nom qualifié complet de la classe, tel que DataSet ou AcmeAccounting.GetDetails dans l'exemple précédent.

Les noms qualifiés complets peuvent être longs et peu pratiques. Si tel est le cas, vous pouvez utiliser le mot clé using pour spécifier un nom court, ou alias, afin de rendre votre code plus lisible.

Dans le code suivant, un alias est créé pour faire référence au code écrit par une société fictive :

using DataTier = Acme.SQLCode.Client;

class OutputSales
{
    static void Main()
    {
        int sales = DataTier.GetSales("January");
        System.Console.WriteLine("January's Sales: {0}", sales);
    }
}

Notez que dans la syntaxe de WriteLine, avec {x } dans la chaîne de format, le x indique la position dans la liste d'arguments de la valeur à insérer à cette position. En supposant que la méthode GetSales ait retourné 500, la sortie de l'application serait la suivante :

January's Sales: 500

Directives de prétraitement

À l'instar de C et C++, C# comprend des directives de prétraitement qui offrent la possibilité d'ignorer sous certaines conditions des sections des fichiers sources, de signaler des situations d'erreur et d'avertissement et de délimiter des régions distinctes du code source. L'expression « directives de prétraitement » est utilisée uniquement pour des raisons de cohérence avec les langages de programmation C et C++, puisqu'il n'y a pas d'étape de prétraitement distincte en C#. Pour plus d'informations, consultez Directives de préprocesseur C#.

Voir aussi

Concepts

Guide de programmation C#

Autres ressources

Langage de programmation C# pour les développeurs Java