2009-04-27 10 views

Respuesta

14

El primero tiene un alcance de y para el espacio de nombres x, el segundo tiene un alcance de y para todo el archivo, lo que potentialy otros espacios de nombres. Si te mantienes en un espacio de nombres por archivo (supongo que fue la convención) entonces generalmente no hay diferencia real [pero mira el comentario de Marc sobre los enfrentamientos si los diferentes tipos tienen el mismo nombre en diferentes espacios de nombres]. Si usa StyleCop, querrá que guarde los usos dentro del espacio de nombres.

+0

En realidad, me parece recordar que * puede * haber una diferencia ... * si * hay tipos conflictivos, etc. en diferentes niveles. –

+0

Y como otra diferencia (más práctica) ... uno de ellos puede bloquear el generador de código LINQ-to-SQL, y uno no ;-p –

+0

Buen punto Marc, editará. –

7

Al poner la instrucción using dentro del bloque namespace, lo ubica en ese bloque. Esto afecta una cantidad de cosas.

  1. Como @Steve Haigh mencionado, la declaración using sólo es válida dentro del bloque, por lo que si había otras namespace bloques, que no se verían afectados.
  2. El espacio de nombre especificado por using se puede acortar según el bloque externo namespace. Por lo tanto, using x.y; fuera del espacio de nombre solo se puede expresar como using y; dentro del bloque namespace x.
  3. Al poner using dentro del espacio de nombres, el compilador garantiza que no se sobrescribe el espacio de nombres especificado. Por ejemplo:
    using Guid = System.Guid; 
        namespace Sample 
        { 
         public class Guid {} 
         public class Program 
         { 
          public static void Main() 
          { 
           Console.WriteLine(new Guid()); 
          } 
         } 
        }
    El código anterior se compilará, pero no está claro qué instancia de Guid se está creando una instancia. Si la instrucción using está dentro del bloque namespace, sin embargo, se produce un error de compilación.

Consulte the related StyleCop documentation para una discusión más completa.

+0

+1. Caso de borde interesante allí. –

Cuestiones relacionadas