English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Espace de noms (Namespace) de C#

espaceSon objectif de conception est de fournir un moyen de séparer un ensemble de noms d'autres noms. Le nom d'une classe déclarée dans un espace de noms ne conflictue pas avec le nom d'une classe déclarée dans un autre espace de noms.

Nous prenons un exemple dans un système informatique, un dossier (répertoire) peut contenir plusieurs dossiers, chaque dossier ne peut pas contenir le même nom de fichier, mais les fichiers dans différents dossiers peuvent avoir des noms identiques.

Définir un espace de noms

La définition de l'espace de noms est faite avec le mot-clé espace Commencez par suivre le nom de l'espace de noms, comme indiqué ci-dessous :

namespace namespace_name
{
   // Déclaration de code
}

Pour appeler des fonctions ou des variables qui prennent en charge la version avec espace de noms, le nom de l'espace de noms est placé devant, comme indiqué ci-dessous :

namespace_name.item_name;

Le programme suivant montre l'utilisation des espaces de noms :

using System;
namespace first_space
{
   class namespace_cl
   {
      public void func()
      {
         Console.WriteLine("Inside first_space");
      }
   }
}
namespace second_space
{
   class namespace_cl
   {
      public void func()
      {
         Console.WriteLine("Inside second_space");
      }
   }
}   
class TestClass
{
   static void Main(string[] args)
   {
      first_space.namespace_cl fc = new first_space.namespace_cl();
      second_space.namespace_cl = new second_space.namespace_cl();
      fc.func();
      sc.func();
      Console.ReadKey();
   }
}

Lorsque le code suivant est compilé et exécuté, il produit le résultat suivant :

Inside first_space
Inside second_space

using mots-clés

using Les mots-clés indiquent que le programme utilise les noms dans l'espace de noms donné. Par exemple, nous utilisons System Espace de noms où sont définies les classes Console. Nous pouvons écrire simplement :

Console.WriteLine("Hello there");

Nous pouvons écrire le nom complet, comme suit :

System.Console.WriteLine("Hello there");

Vous pouvez également utiliser using Instructions d'espace de noms, de sorte que vous n'ayez pas besoin d'ajouter le nom de l'espace de noms en tête lors de l'utilisation. Cette instruction informe le compilateur que le code suivant utilise les noms dans l'espace de noms spécifié. Le code suivant montre l'utilisation de l'espace de noms.

Laissez-nous utiliser l'instruction using pour spécifier le exemple ci-dessus :

using System;
using first_space;
using second_space;
namespace first_space
{
   class abc
   {
      public void func()
      {
         Console.WriteLine("Inside first_space");
      }
   }
}
namespace second_space
{
   class efg
   {
      public void func()
      {
         Console.WriteLine("Inside second_space");
      }
   }
}   
class TestClass
{
   static void Main(string[] args)
   {
      abc fc = new abc();
      efg sc = new efg();
      fc.func();
      sc.func();
      Console.ReadKey();
   }
}

Lorsque le code suivant est compilé et exécuté, il produit le résultat suivant :

Inside first_space
Inside second_space

Espace de noms imbriqué

Les espaces de noms peuvent être imbriqués, ce qui signifie que vous pouvez définir un espace de noms à l'intérieur d'un autre espace de noms, comme suit :

namespace namespace_name1 
{
   // Déclaration de code
   namespace namespace_name2 
   {
     // Déclaration de code
   }
}

Vous pouvez accéder aux membres de l'espace de noms imbriqué en utilisant l'opérateur de point (.) comme suit :

using System;
using SomeNameSpace;
using SomeNameSpace.Nested;
namespace SomeNameSpace
{
    public class MyClass 
    {
        static void Main() 
        {
            Console.WriteLine("Dans SomeNameSpace");
            Nested.NestedNameSpaceClass.SayHello();
        }
    }
    // Espace de noms imbriqué
    namespace Nested   
    {
        public class NestedNameSpaceClass 
        {
            public static void SayHello() 
            {
                Console.WriteLine("Dans Nested");
            }
        }
    }
}

Lorsque le code suivant est compilé et exécuté, il produit le résultat suivant :

Dans SomeNameSpace
Dans Nested