Différences entre «utiliser» (importer) à l’intérieur ou à l’extérieur de «l’espace de noms»?

Dupliquer possible:
Les utilisations doivent-elles être à l’intérieur ou à l’extérieur de l’espace de noms

J’ai vu deux approches d’utilisation d’assemblages. Quelle est la différence et les avantages d’utiliser l’un par rapport à l’autre

namespace Assembly { using System.Data; class Foo{ ... } } using System.Data; namespace Assembly { class Foo{ ... } } 

Il y a en fait une petite différence entre eux.

Considérons l’exemple suivant:

 //File1.cs using System; namespace Outer.Inner { class Foo { static void Bar() { double d = Math.PI; } } } // File2.cs namespace Outer { class Math { } } 

Le compilateur obtiendra une erreur car il trouvera une classe Math dans un espace de noms Outer avant de rechercher un espace de noms System . Et à l’intérieur de cet espace de noms Math il n’y a pas de PI .

Au cas où, si vous mettez plutôt using System dans la déclaration de classe, celle-ci sera sélectionnée par le compilateur en premier , de sorte qu’aucune erreur ne sera générée.

L’avantage de cela est clair: si vous obtenez du code, si quelqu’un écrit la classe Math dans le même espace-noms que celui qui vous a écrit, vous avez la possibilité de résoudre ce problème.

Pour des explications plus détaillées, regardez sur ce lien (d’où j’ai gracieusement copié le code également). Les actions doivent-elles être à l’intérieur ou à l’extérieur de l’espace de noms?

Je ne crois pas qu’il y ait un avantage à l’un ou l’autre format. Cela dépend simplement des normes de codage et de la lisibilité des équipes.