Partager via


Namespace, instruction

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

Syntaxe

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

Pièces

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. Nom unique qui identifie l’espace de noms. Doit être 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. Il s’agit notamment des énumérations, des structures, des interfaces, des classes, des modules, des délégués et d’autres espaces de noms.

End Namespace Met fin à un Namespace bloc.

Remarques

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 sens où une classe ou une structure est : vous ne pouvez pas déclarer un élément de programmation pour avoir le type de données d’un espace de noms.

Tous les éléments de programmation déclarés après qu’une Namespace instruction 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 End Namespace instruction ou une autre Namespace instruction.

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 Namespace instruction pour diriger Visual Basic pour compiler des éléments dans cet espace de noms.

Vous pouvez utiliser une Namespace instruction 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. Il n’existe aucune limite stricte aux niveaux d’imbrication que vous pouvez déclarer, mais n’oubliez pas que lorsque d’autres codes accèdent aux éléments déclarés dans l’espace de noms le plus interne, 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 ont un niveau d’accès Public . Un espace de noms est accessible à partir du code n’importe où dans le même projet, à partir d’autres projets qui référencent le projet et à partir de 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 Public ou Friend accéder. 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 attribue le nom de votre projet comme espace de noms racine par défaut pour tout le 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 Namespace instruction, 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 d’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 Global mot clé pour faire référence à des éléments d’espaces de noms définis en dehors de votre projet. Cela vous permet de conserver le nom de votre 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 Les espaces de noms en Visual Basic.

Le Global mot clé peut également être utilisé dans une instruction Namespace. Cela vous permet de définir un espace de noms hors de l’espace de noms racine de votre projet. Pour plus d’informations, consultez la section « Global Keyword in Namespace Statements » dans Namespaces in Visual Basic.

Troubleshooting. 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 Global mot clé 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 contribue aux 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 n’est pas un type, ces modificateurs ne sont pas significatifs.

Exemple 1

L’exemple suivant déclare deux espaces de noms, 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 System.Collections.Generic de noms.

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