Namespace, instruction

Déclare le nom d’un espace de noms et entraîne la compilation du code source qui suit la déclaration dans cet espace de noms.

Syntaxe

Namespace [Global.] { name | name.name }
    [ componenttypes ]
End Namespace

Éléments

Facultatif global. Vous permet de définir un espace de noms hors de l’espace de noms racine de votre projet. Voir Espaces de noms dans Visual Basic.

name Obligatoire. Un nom unique qui identifie l’espace de noms. Il doit s’agir d’un identificateur Visual Basic valide. Pour plus d’informations, consultez Noms d’éléments déclarés.

componenttypes Facultatif. Éléments qui composent l’espace de noms. Ils incluent, sans s’y limiter, des structures, des interfaces, des classes, des modules, des délégués et d’autres espaces de noms.

End Namespace met fin à un bloc Namespace.

Notes

Les espaces de noms sont utilisés comme système organisationnel. Ils permettent de classifier et de présenter des éléments de programmation exposés à d’autres programmes et applications. Notez qu’un espace de noms n’est pas un type au même sens qu’une classe ou une structure : vous ne pouvez pas déclarer qu’un élément de programmation possède le type de données d’un espace de noms.

Tous les éléments de programmation déclarés après une instruction Namespace appartiennent à cet espace de noms. Visual Basic continue de compiler des éléments dans le dernier espace de noms déclaré jusqu’à ce qu’il rencontre une instruction End Namespace ou une autre instruction Namespace.

Si un espace de noms est déjà défini, même en dehors de votre projet, vous pouvez y ajouter des éléments de programmation. Pour ce faire, vous utilisez une instruction Namespace pour diriger Visual Basic pour compiler des éléments dans cet espace de noms.

Vous pouvez utiliser une instruction Namespace uniquement au niveau du fichier ou de l’espace de noms. Cela signifie que le contexte de déclaration d’un espace de noms doit être un fichier source ou un autre espace de noms et ne peut pas être une classe, une structure, un module, une interface ou une procédure. Pour plus d’informations, consultez Contextes de déclaration et niveaux d’accès par défaut.

Vous pouvez déclarer un espace de noms dans un autre espace de noms. Il n’existe aucune limite stricte aux niveaux d’imbrication que vous pouvez déclarer, mais n’oubliez pas que lorsqu’un autre code accède aux éléments déclarés dans l’espace de noms le plus intérieur, il doit utiliser une chaîne de qualification qui contient tous les noms d’espaces de noms dans la hiérarchie d’imbrication.

Niveau d’accès

Les espaces de noms sont traités comme s’ils avaient un niveau d’accès Public. Un espace de noms est accessible à partir du code n’importe où dans le même projet,depuis d’autres projets qui référencent le projet et depuis n’importe quel assembly généré à partir du projet.

Les éléments de programmation déclarés au niveau de l’espace de noms, c’est-à-dire dans un espace de noms, mais pas à l’intérieur d’un autre élément, peuvent avoir un accès à Public ou Friend. S’il n’est pas spécifié, le niveau d’accès d’un tel élément utilise Friend par défaut. Les éléments que vous pouvez déclarer au niveau de l’espace de noms incluent des classes, des structures, des modules, des interfaces, des énumérations et des délégués. Pour plus d’informations, consultez Contextes de déclaration et niveaux d’accès par défaut.

Espace de noms racine

Tous les noms d’espaces de noms de votre projet sont basés sur un espace de noms racine. Visual Studio définit le nom de votre projet comme espace de noms racine par défaut pour l’ensemble du code de votre projet. Par exemple, si votre projet est nommé Payroll, ses éléments de programmation appartiennent à l’espace de noms Payroll. Si vous déclarez Namespace funding, le nom complet de cet espace de noms est Payroll.funding.

Si vous souhaitez spécifier un espace de noms existant dans une instruction Namespace, par exemple dans l’exemple de classe de liste générique, vous pouvez définir votre espace de noms racine sur une valeur Null. Pour ce faire, cliquez sur Propriétés du projet dans le menu Projet, puis désactivez l’entrée Espace de noms racine pour que la zone soit vide. Si vous ne l’avez pas fait dans l’exemple de classe de liste générique, le compilateur Visual Basic prend System.Collections.Generic comme nouvel espace de noms dans le projet Payroll, avec le nom complet de Payroll.System.Collections.Generic.

Vous pouvez également utiliser le mot clé Global pour faire référence à des éléments d’espaces de noms définis en dehors de votre projet. Cela vous permet de conserver votre nom de projet en tant qu’espace de noms racine. Cela réduit le risque de fusion involontaire de vos éléments de programmation avec ceux des espaces de noms existants. Pour plus d’informations, consultez la section « Mot clé global dans les noms complets » dans Espaces de noms dans Visual Basic.

Le mot clé Global peut également être utilisé dans une instruction Namespace. pour définir un espace de noms hors de l’espace de noms racine de votre projet. Pour plus d’informations, consultez la section « Mot clé Global dans les instructions Namespace » dans Espaces de noms dans Visual Basic.

Résolution des problèmes. L’espace de noms racine peut entraîner des concaténations inattendues de noms d’espaces de noms. Si vous faites référence à des espaces de noms définis en dehors de votre projet, le compilateur Visual Basic peut les interpréter comme des espaces de noms imbriqués dans l’espace de noms racine. Dans ce cas, le compilateur ne reconnaît pas les types qui ont déjà été définis dans les espaces de noms externes. Pour éviter cela, définissez votre espace de noms racine sur une valeur Null, comme décrit dans « Espace de noms racine », ou utilisez le mot clé Global pour accéder aux éléments d’espaces de noms externes.

Attributs et modificateurs

Vous ne pouvez pas appliquer d’attributs à un espace de noms. Un attribut fournit des informations sur les métadonnées de l’assembly, ce qui n’est pas significatif pour les classifieurs sources tels que les espaces de noms.

Vous ne pouvez pas appliquer de modificateurs d’accès ou de procédure, ou tout autre modificateur, à un espace de noms. Étant donné qu’il ne s’agit pas d’un type, ces modificateurs ne sont pas significatifs.

Exemple 1

L’exemple suivant déclare deux espaces de noms, l’un imbriqué dans l’autre.

Namespace n1
    Namespace n2
        Class a
            ' Insert class definition.
        End Class
    End Namespace
End Namespace

Exemple 2

L’exemple suivant déclare plusieurs espaces de noms imbriqués sur une seule ligne et équivaut à l’exemple précédent.

Namespace n1.n2
    Class a
        ' Insert class definition.
    End Class
End Namespace

Exemple 3

L’exemple suivant accède à la classe définie dans les exemples précédents.

Dim instance As New n1.n2.a

Exemple 4

L’exemple suivant définit le squelette d’une nouvelle classe de liste générique et l’ajoute à l’espace de noms System.Collections.Generic.

Namespace System.Collections.Generic
    Class specialSortedList(Of T)
        Inherits List(Of T)
        ' Insert code to define the special generic list class.
    End Class
End Namespace

Voir aussi