之间有什么区别
namespace x
{
using y;
}
和
using y;
namespace x
{
}
答案 0 :(得分:15)
第一个只有命名空间x的范围是y,第二个在整个文件的范围内有y,所以潜在的其他命名空间。如果你保持每个文件一个命名空间(我猜这是惯例)那么通常没有真正的区别[但是如果不同的类型在不同的命名空间中具有相同的名称,请参阅Marc关于冲突的评论]。如果您使用StyleCop,它将要求您将命令保留在命名空间内。
答案 1 :(得分:7)
将using
语句放在namespace
块中,将其范围限定在该块中。这会影响很多事情。
using
语句仅在块中有效,因此如果有其他namespace
块,则不会受到影响。using
指定的命名空间可以根据外部namespace
块缩短。因此,名称空间之外的using x.y;
只能在using y;
块内表示为namespace x
。using
置于命名空间内会导致编译器保证不会覆盖指定的命名空间。例如:
using Guid = System.Guid;
namespace Sample
{
public class Guid {}
public class Program
{
public static void Main()
{
Console.WriteLine(new Guid());
}
}
}
上面的代码将编译,但不清楚哪个Guid
被实例化。但是,如果using
语句位于namespace
块内,则会引发编译器错误。有关更完整的讨论,请参阅the related StyleCop documentation。