Mögliches Duplikat:
Sollte Usings innerhalb oder außerhalb des Namensraums liegen
Was ist der Unterschied zwischen
namespace x
{
using y;
}
y
using y;
namespace x
{
}
?
Mögliches Duplikat:
Sollte Usings innerhalb oder außerhalb des Namensraums liegen
Was ist der Unterschied zwischen
namespace x
{
using y;
}
y
using y;
namespace x
{
}
?
Die erste hat y im Bereich für nur den Namensraum x, die zweite hat y im Bereich für die gesamte Datei, also möglicherweise andere Namensräume. Wenn Sie sich auf einen Namensraum pro Datei beschränken (ich nehme an, dass das die Konvention war), dann gibt es in der Regel kein wirklicher Unterschied [aber siehe Marcs Kommentar zu Konflikten, wenn verschiedene Typen den gleichen Namen in verschiedenen Namensräumen haben]. Wenn Sie StyleCop verwenden, wird es wollen, dass Sie die Verwendungen innerhalb des Namespaces behalten.
Die Umsetzung der using
Anweisung innerhalb der namespace
Block auf diesen Block beschränkt. Dies hat Auswirkungen auf eine Reihe von Dingen.
using
Anweisung ist nur innerhalb des Blocks gültig, d.h. wenn es andere namespace
Blöcke, wären sie nicht betroffen.using
kann auf der Grundlage der äußeren Hülle gekürzt werden namespace
blockieren. Also using x.y;
außerhalb des Namespace kann einfach ausgedrückt werden als using y;
innerhalb des namespace x
Block.Die Umsetzung der using
innerhalb des Namespaces bewirkt, dass der Compiler garantiert, dass der angegebene Namespace nicht überschrieben wird. Zum Beispiel:
using Guid = System.Guid;
namespace Sample
{
public class Guid {}
public class Program
{
public static void Main()
{
Console.WriteLine(new Guid());
}
}
}
Der obige Code wird kompiliert, aber es ist unklar, welche Guid
instanziiert wird. Wenn die using
Anweisung befindet sich innerhalb der namespace
Blocks wird jedoch ein Compilerfehler ausgelöst.
Siehe die zugehörige StyleCop-Dokumentation für eine ausführlichere Diskussion.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.