2009-04-27 6 views

Répondre

14

Le premier a la portée de l'espace de noms x, le second a la portée de l'ensemble du fichier, donc potentiellement d'autres espaces de noms. Si vous gardez un espace de noms par fichier (je suppose que c'était la convention), il n'y a généralement aucune différence réelle [mais voir le commentaire de Marc sur les conflits si différents types ont le même nom dans différents espaces de noms]. Si vous utilisez StyleCop, il vous faudra conserver les utilisations à l'intérieur de l'espace de noms.

+0

En fait, il me semble me rappeler qu'il peut y avoir * une différence * ... * s'il y a des types contradictoires, etc., à différents niveaux. –

+0

Et comme une autre différence (plus pratique) ... l'un d'eux peut planter le générateur de code LINQ-to-SQL, et on ne le fait pas ;-p –

+0

Bon point Marc, éditera. –

7

En mettant l'instruction using à l'intérieur du bloc namespace l'étend à ce bloc. Cela affecte un certain nombre de choses.

  1. Comme @Steve Haigh mentionné, la déclaration using est valable uniquement dans le bloc, donc s'il y avait d'autres namespace blocs, ils ne seraient pas touchés.
  2. L'espace de noms spécifié par using peut être raccourci en fonction du bloc externe namespace. Donc using x.y; en dehors de l'espace de noms peut être simplement exprimé comme using y; à l'intérieur du bloc namespace x.
  3. Si vous placez using à l'intérieur de l'espace de noms, le compilateur garantit que l'espace de noms spécifié n'est pas remplacé. Par exemple:
    using Guid = System.Guid; 
        namespace Sample 
        { 
         public class Guid {} 
         public class Program 
         { 
          public static void Main() 
          { 
           Console.WriteLine(new Guid()); 
          } 
         } 
        }
    Le code ci-dessus va compiler, mais il n'est pas clair lequel Guid est instancié. Si l'instruction using se trouve à l'intérieur du bloc namespace, une erreur de compilation est toutefois générée.

Voir the related StyleCop documentation pour une discussion plus complète.

+0

+1. Cas de bord intéressant là-bas. –