Comprendre les Namespace (Espaces de noms) en C#

Les Namespace (ou Espaces de noms en français) permettent d’organiser les différents éléments d’un programme en C#.

Catégorie : C# | Auteur : Matkilsa

1

📂 Concept simple d'un Namespace

On peut comparer un namespace à un dossier dans ton ordinateur :
Tu ne peux pas avoir deux fichiers avec le même nom dans un même dossier.
De même, en programmation, on ne peut pas créer deux fonctions, classes, etc., avec le même nom dans un même espace.
Les namespaces permettent donc d’éviter ces conflits en les séparant dans des « dossiers » logiques.

Exemple classique d’un jeu vidéo avec plusieurs namespaces :

Namespace Fontion principale
Engine Gestion du moteur de jeu
Enemy Gestion des ennemis
SFX Gestion des effets spéciaux

Lors de la conception de ton programme, crée tes propres namespaces pour rendre le code plus lisible et éviter les conflits futurs.

2

🗄️ Exemple simple de Namespace

Assez parler regardons ce code :

namespace NomEspace.Projet1
{
    class MaClasse
    {
    }
}

namespace NomEspace.Projet1
{
    class MaClasse1
    {
    }
}

Ici, deux classes MaClasse et MaClasse1 sont définies dans le même namespace NomEspace.Projet1 Ces classes peuvent être utilisées dans d’autres namespaces.

3

🗃️ Exemple avec fonction dans un Namespace imbriqué

namespace NomEspace.Projet1
{
    public class MaClasse
    {
        static void Main()
        {
            NomEspace2.MaClasse2.SayHello();
        }
    }

    // nouveau NameSpace
    namespace NomEspace2
    {    
        public class MaClasse2
        {
            public static void SayHello()
            {
                Console.WriteLine("Hello");
            }
        }
    }
}
// Output: Hello

La méthode SayHello() est appelée depuis le namespace imbriqué NomEspace2.
Résultat dans la console : Hello.

4

🕹️ Exemple concret dans Unity

Le but ici est d’utiliser des namespaces pour structurer tes scripts Unity.

  • Crée deux objets vides (Empty GameObject) dans ta scène Unity.
  • Crée un script attaché à chacun de ces objets.
    Renomme-les Tutoriel1 et Tutoriel2.

Script Tutoriel1 :

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

namespace TutorielNamespace
{
    public class Tutoriel1 : MonoBehaviour
    {
        public bool myFunction()
        {
            Debug.LogWarning("Ma fonction est efficace");
            return true;
        }
    }
}

Ici, Tutoriel1 est dans le namespace TutorielNamespace.
La fonction myFunction() affiche un warning dans la console Unity.

warning
5

🕹️ Script Tutoriel2 qui utilise Tutoriel1

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

// On garde bien le même Namespace que sur le premier fichier
namespace TutorielNamespace
{
    public class Tutoriel2 : MonoBehaviour
    {
        // Fonction start d'Unity
        void Start()
        {
            //En premier lieu on déclare dans un nouveau objet la classe principale
            Tutoriel1 myObject = new Tutoriel1(); 

            // On peut donc maintenant appeler la fonction
            myObject.myFunction();
        }
    }
}

Tutoriel2 est dans le même namespace TutorielNamespace.
Dans la méthode Start(), on crée une instance de Tutoriel1 et on appelle myFunction().
Le warning s'affichera dans la console Unity.

warning
C

✅ Conclusion

Les namespaces permettent d’organiser et de modulariser ton code pour éviter les conflits de noms.
Avec Unity, cela facilite la gestion des scripts, surtout dans des projets complexes.
Toujours définir et utiliser un namespace cohérent dans tes scripts.

🏠 Accueil des tutoriels