2013-04-08 12 views
6

stavo imparando MVC WebAPI e stavo seguendo un tutorial e tutto stava andando bene fino a che ho visto quanto segue:Inserire gli usi all'interno o all'esterno dello spazio dei nomi?

namespace HelloWebAPI.Controllers 
{ 
    using HelloWebAPI.Models; 
    using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Net; 
    using System.Net.Http; 
    using System.Web.Http; 

    public class ProductsController : ApiController 
    {} 

Quello che facciamo di solito è che aggiungiamo le risorse \ portata in principio come questo:

using HelloWebAPI.Models; 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Net; 
using System.Net.Http; 
using System.Web.Http; 

namespace HelloWebAPI.Controllers 
{ 

    public class ProductsController : ApiController 
    {} 

Il mio supervisore mi ha detto che va tutto bene e che dovrebbe essere ok, perché è un tutorial MS ufficiale sull'argomento.

** Che cosa voglio sapere perché questo non ha importanza, in modo da avere una migliore comprensione al riguardo? **

+1

Si prega di aggiornare il tuo titolo http://meta.stackexchange.com/questions/10647/how-do-i-write-a-good-title –

risposta

5

C'è una differenza, piccola ma non c'è.

Riguarda la sequenza di risoluzione dei nomi effettuata dal compilatore. La buona risposta sul tema si possono trovare qui:

Should Usings be inside or outside the namespace

In pratica nel primo caso compilatore, nel caso in cui non riusciva a trovare immediatamente un'informazione di tipo, sarebbe la ricerca all'interno degli spazi dei nomi dichiarato all'internousing. Nel secondo caso, invece, cerca prima tra il namespace effettivo e dopo solo andare a cercare all'interno dichiarato all'esterno.

+0

Buona risposta in parole semplici. Grazie. –

3

È possibile definire più di uno spazio dei nomi in un file C#.

Inserire le istruzioni using all'interno di uno spazio dei nomi significa che sono solo in uso all'interno di tale spazio dei nomi per quel file.

Inserirli fuori dallo spazio dei nomi significa che si applicano a tutti gli spazi dei nomi all'interno del file.

È un po 'come l'ambito dei nomi di variabile si applica solo alle parentesi più interne che li contengono e più in profondità.

1

L'unica differenza riguarda lo scopo dell'utilizzo delle istruzioni. Se si utilizza l'uso all'interno di uno spazio dei nomi, queste istruzioni di utilizzo verranno incluse in tutti i file che si trovano in tale spazio dei nomi. E se usi le istruzioni al di fuori dello spazio dei nomi, allora queste istruzioni usando saranno valide solo per il file corrente.

File 1:

namespace MyNamespace 
{ 
    using System; 
    using System.IO; 

    public MyClass 
    { 
    } 
} 

File 2:

namespace MyNamespace 
{ 
    public MyClassV2 
    { 
    } 
} 

In questo esempio non è necessario aggiungere l'utilizzo in File 2 per MyClassV2 come MyNamespace ha già queste affermazioni utilizzando. Ma per uno spazio dei nomi diverso è necessario aggiungere le istruzioni.

+0

Hai mai provato questo? –

+2

questa è una risposta errata e fuorviante. –

+0

questo è sbagliato! – Gwny

Problemi correlati