espace de noms

Le mot clé namespace est utilisé pour déclarer une portée qui contient un ensemble d’objets connexes. Vous pouvez utiliser un espace de noms pour organiser les éléments de code et créer des types globaux uniques.

namespace SampleNamespace
{
    class SampleClass { }

    interface ISampleInterface { }

    struct SampleStruct { }

    enum SampleEnum { a, b }

    delegate void SampleDelegate(int i);

    namespace Nested
    {
        class SampleClass2 { }
    }
}

Les déclarations d’espace de noms délimitées aux fichiers vous permettent de déclarer que tous les types d’un fichier se trouvent dans un seul espace de noms. Les déclarations d’espace de noms délimitées aux fichiers sont disponibles avec C# 10. L’exemple suivant est similaire à l’exemple précédent, mais utilise une déclaration d’espace de noms délimitée par un fichier :

using System;

namespace SampleFileScopedNamespace;

class SampleClass { }

interface ISampleInterface { }

struct SampleStruct { }

enum SampleEnum { a, b }

delegate void SampleDelegate(int i);

L’exemple précédent n’inclut pas d’espace de noms imbriqué. Les espaces de noms délimités aux fichiers ne peuvent pas inclure de déclarations d’espace de noms supplémentaires. Vous ne pouvez pas déclarer un espace de noms imbriqué ou un deuxième espace de noms délimité à un fichier :

namespace SampleNamespace;

class AnotherSampleClass
{
    public void AnotherSampleMethod()
    {
        System.Console.WriteLine(
            "SampleMethod inside SampleNamespace");
    }
}

namespace AnotherNamespace; // Not allowed!

namespace ANestedNamespace // Not allowed!
{
   // declarations...
}

Dans un espace de noms, vous pouvez déclarer zéro ou plusieurs des types suivants :

  • class
  • interface
  • Struct
  • enum
  • delegate
  • Les espaces de noms imbriqués peuvent être déclarés, sauf dans les déclarations d’espace de noms délimitées au fichier

Le compilateur ajoute un espace de noms par défaut. Cet espace de noms sans nom, parfois appelé espace de noms global, est présent dans chaque fichier. Il contient des déclarations non incluses dans un espace de noms déclaré. Tout identificateur dans l’espace de noms global peut être utilisé dans un espace de noms nommé.

Les espaces de noms ont implicitement un accès public. Consultez Modificateurs d’accès pour connaître les modificateurs d’accès que vous pouvez assigner à des éléments dans un espace de noms.

Il est possible de définir un espace de noms dans deux déclarations ou plus. Par exemple, l’exemple suivant définit deux classes comme appartenant à l’espace de noms MyCompany :

namespace MyCompany.Proj1
{
    class MyClass
    {
    }
}

namespace MyCompany.Proj1
{
    class MyClass1
    {
    }
}

L’exemple suivant montre comment appeler une méthode statique dans un espace de noms imbriqué.

namespace SomeNameSpace
{
    public class MyClass
    {
        static void Main()
        {
            Nested.NestedNameSpaceClass.SayHello();
        }
    }

    // a nested namespace
    namespace Nested
    {
        public class NestedNameSpaceClass
        {
            public static void SayHello()
            {
                Console.WriteLine("Hello");
            }
        }
    }
}
// Output: Hello

spécification du langage C#

Pour plus d’informations, voir la section Espace de noms de la spécification du langage C#. Pour plus d’informations sur les déclarations d’espace de noms délimitées aux fichiers, consultez la spécification des fonctionnalités.

Voir aussi