Ignorer les liens de navigationAccueil : Introduction au Framework .NET : Architecture d'une application .NET : Espaces de noms Ignorer les liens de navigation
Accueil
Introduction au Framework .NETDévelopper Introduction au Framework .NET
Le langage C#Développer Le langage C#
Programmation orientée objetsDévelopper Programmation orientée objets
CollectionsDévelopper Collections
ADO.NETDévelopper ADO.NET
LINQDévelopper LINQ
ASP.NETDévelopper ASP.NET
Workflow FoundationDévelopper Workflow Foundation
Besoins de prestationDévelopper Besoins de prestation

Espaces de noms

Une application .NET est constituée de types. Ces types sont principalement des classes mais on peut également trouver des structures, des énumérations et des délégués. Tous ces éléments sont étudiés plus loin dans le support de cours.

Les espaces de noms (namespaces) permettent d’organiser logiquement et hiérarchiquement les types qui constituent l’application. Les types livrés dans le framework .NET sont répartis sur des espaces de noms crées par Microsoft. Lorsqu’on développe une application .NET, il faut placer les types que l’on crée dans des espaces de noms qui sont propres à l’application. Par exemple, si on développe une application de gestion commerciale, on pourra toutes les classes relatives à la facturation dans un espace de noms Facturation et tout ce qui traitent des informations clients dans un autre Namespace pour organiser les types.

Les principaux namespaces livrés dans le framework .NET sont les suivants :

L’exemple suivant montre comment utiliser les namespaces. Il y a toujours deux possibilités pour utiliser un type placé dans un autre namespace que le namespace en cours :

L’exemple suivant montre comment utiliser des types répartis sur plusieurs namespaces.

Le code de la classe nommée ClasseA placée dans un namespace nommé DeuxiemeNamespace est le suivant :

C#

namespace DeuxiemeNamespace

{

    public class ClasseA

    {

    }

}

VB.NET

Namespace DeuxiemeNamespace

    Public Class ClasseA

    End Class

End Namespace

Le code de la classe nommée ClasseB placée dans un namespace nommé DeuxiemeNamespace est le suivant :

C#

namespace DeuxiemeNamespace

{

    public class ClasseB

    {

    }

}

VB.NET

Namespace DeuxiemeNamespace

    Public Class ClasseB

    End Class

End Namespace

Le code de la classe nommée ClasseB placée dans un namespace nommé TroisiemeNamespace est le suivant :

C#

namespace TroisiemeNamespace

{

    public class ClasseB

    {

    }

}

VB.NET

Namespace TroisiemeNamespace

    Public Class ClasseB

    End Class

End Namespace

Le programme principal qui exploite ces classes est le suivant :

C#

using DeuxiemeNamespace;

using TroisiemeNamespace;

 

namespace PremierNamespace

{

    public class Program

    {

        static void Main(string[] args)

        {

            ClasseA c1 = new ClasseA();

            // DeuxiemeNamespace.ClasseA c1 = new DeuxiemeNamespace.ClasseA();

            // Syntaxe precedente non obligatoire car la directive using a été spécifiée

            // et il n'y a pas conflit de noms.

 

            // Dans les deux cas suivants, bien que les using soient corrects

            // le nom des classes est en conflit, il est donc obligatoire

            // de specifier le nom complet de la classe.

            DeuxiemeNamespace.ClasseB c2 = new DeuxiemeNamespace.ClasseB();

            TroisiemeNamespace.ClasseB c3 = new TroisiemeNamespace.ClasseB();

        }

    }

}

VB.NET

Imports DeuxiemeNamespace

Imports TroisiemeNamespace

 

Namespace PremierNamespace

    Public Class Program

        Public Shared Sub Main(ByVal args() As String)

            Dim c1 As ClasseA = New ClasseA

            ' DeuxiemeNamespace.ClasseA c1 = new DeuxiemeNamespace.ClasseA();

            ' Syntaxe precedente non obligatoire car la directive imports a ete specifiee

            ' et il n'y a pas conflit de noms.

            ' Dans les deux cas suivants, bien que les imports soient corrects

            ' le nom des classes est en conflit, il est donc obligatoire

            ' de specifier le nom complet de la classe.

            Dim c2 As DeuxiemeNamespace.ClasseB = New DeuxiemeNamespace.ClasseB

            Dim c3