2013-04-08 3 views
6

Ich war MVC WebAPI lernen, und ich wurde im Anschluss an ein Tutorial und alles ging gut, bis ich sah folgendes:Platzieren Sie Usings innerhalb oder außerhalb des Namensraums?

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 
    {} 

Was wir normalerweise tun, ist, dass wir die Ressourcen \ Umfang am Anfang wie folgt hinzu:

Mein Vorgesetzter sagte mir, dass es in Ordnung ist und es sollte in Ordnung sein, weil es ein offizielles MS-Tutorial zu diesem Thema ist.

** Was möchte ich wissen, warum das egal ist, damit ich ein besseres Verständnis davon habe? **

+1

Bitte aktualisieren Sie Ihren Titel http://meta.stackexchange.com/questions/10647/how-do-i-write-a-good-title –

Antwort

5

Es gibt einen Unterschied, klein, aber es gibt.

Es geht um die Reihenfolge der Namensauflösung von Compiler gemacht. Die gute Antwort auf Thema finden Sie hier:

Should Usings be inside or outside the namespace

In der Praxis in ersten Fall Compiler, falls nicht eine Art Informationen sofort finden konnte, unter Namespaces suchen würde erklärt innerhalbusing. Im zweiten Fall würde stattdessen zuerst unter dem tatsächlichen Namespace suchen und nach nur gehen, um innerhalb deklariert außerhalb suchen.

+0

Gute Antwort in einfachen Worten. Vielen Dank. –

3

Sie können mehr als einen Namespace in einer C# -Datei definieren.

Das Setzen von using Anweisungen innerhalb eines Namespaces bedeutet, dass sie nur in diesem Namespace für diese Datei verwendet werden.

Wenn Sie sie außerhalb des Namensbereichs platzieren, gelten sie für alle Namespaces innerhalb der Datei.

Es ist eine Art, wie der Geltungsbereich von Variablennamen nur in den innersten geschweiften Klammern gilt, die sie enthält und tiefer.

1

Der einzige Unterschied besteht im Umfang der Verwendung von Anweisungen. Wenn Sie in einem Namespace verwenden, werden diese using-Anweisungen in allen Dateien enthalten, die sich unter diesem Namespace befinden. Und wenn Sie Anweisungen außerhalb von Namespaces verwenden, sind diese using-Anweisungen nur für die aktuelle Datei gültig.

Datei 1:

namespace MyNamespace 
{ 
    using System; 
    using System.IO; 

    public MyClass 
    { 
    } 
} 

File 2:

namespace MyNamespace 
{ 
    public MyClassV2 
    { 
    } 
} 

In diesem Beispiel müssen Sie nicht in Datei 2 für MyClassV2 hinzufügen Verwendung als MyNamespace bereits diese mit Aussagen hat. Für einen anderen Namespace müssen Sie jedoch Anweisungen hinzufügen.

+0

Haben Sie das tatsächlich versucht? –

+2

das ist falsch und irreführende Antwort. –

+0

das ist falsch! – Gwny