【发布时间】:2010-10-22 03:50:08
【问题描述】:
有什么区别
namespace x
{
using y;
}
和
using y;
namespace x
{
}
?
【问题讨论】:
标签: .net namespaces
有什么区别
namespace x
{
using y;
}
和
using y;
namespace x
{
}
?
【问题讨论】:
标签: .net namespaces
第一个 y 仅用于命名空间 x,第二个 y 用于整个文件,因此可能是其他命名空间。如果您为每个文件保留一个命名空间(我猜这是惯例),那么通常并没有真正的区别[但如果不同类型在不同的命名空间中具有相同的名称,请参阅 Marc 关于冲突的评论]。如果您使用 StyleCop,它会希望您将 usings 保留在命名空间内。
【讨论】:
将using 语句放在namespace 块内,将其范围限定为该块。这会影响很多事情。
using 语句仅在块内有效,因此如果有其他namespace 块,它们不会受到影响。using 指定的命名空间可以根据外部namespace 块缩短。所以命名空间外的using x.y; 可以在namespace x 块内表示为using y;。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 以获得更完整的讨论。
【讨论】: