2009-04-27 10 views

risposta

14

Il primo ha y nella portata solo per lo spazio dei nomi x, il secondo ha y in ambito per l'intero file, quindi potentiamente altri spazi dei nomi. Se si mantiene uno spazio dei nomi per file (suppongo che fosse la convenzione), c'è in genere senza alcuna differenza reale [ma si veda il commento di Marc sulle collisioni se diversi tipi hanno lo stesso nome in spazi dei nomi diversi]. Se usi StyleCop, vorrai che tu mantenga gli usi all'interno dello spazio dei nomi.

+0

In realtà, mi sembra di ricordare che * può * essere una differenza ... * se * ci sono tipi in conflitto ecc. A diversi livelli. –

+0

E come un'altra (più pratica) differenza ... uno di essi può bloccare il generatore di codice LINQ-to-SQL e uno non lo fa ;-p –

+0

Un buon punto Marc, verrà modificato. –

7

Mettere l'istruzione using all'interno del blocco namespace lo scopre su quel blocco. Questo riguarda un certo numero di cose.

  1. Come @Steve Haigh accennato, la dichiarazione using è valido solo all'interno del blocco, quindi se ci fossero altri namespace blocchi, essi non sarebbero interessate.
  2. Lo spazio dei nomi specificato da using può essere abbreviato in base al blocco namespace esterno. Quindi using x.y; al di fuori dello spazio dei nomi può essere espresso come using y; all'interno del blocco namespace x.
  3. Inserendo lo using all'interno dello spazio dei nomi, il compilatore garantisce che lo spazio dei nomi specificato non venga sovrascritto. Ad esempio:
    using Guid = System.Guid; 
        namespace Sample 
        { 
         public class Guid {} 
         public class Program 
         { 
          public static void Main() 
          { 
           Console.WriteLine(new Guid()); 
          } 
         } 
        }
    Il codice sopra verrà compilato, ma non è chiaro quale Guid viene istanziato. Se l'istruzione using si trova all'interno del blocco namespace, tuttavia, viene generato un errore del compilatore.

Vedere the related StyleCop documentation per una discussione più completa.

+0

+1. Caso limite interessante lì. –

Problemi correlati