可能重复:
应该在命名空间内部或外部使用
有什么区别
namespace x
{
using y;
}
Run Code Online (Sandbox Code Playgroud)
和
using y;
namespace x
{
}
Run Code Online (Sandbox Code Playgroud)
?
Ste*_*eve 15
第一个只有命名空间x的范围是y,第二个在整个文件的范围内有y,所以潜在的其他命名空间.如果你保持每个文件一个命名空间(我猜这是惯例)那么通常没有真正的区别[但是如果不同的类型在不同的命名空间中具有相同的名称,请参阅Marc关于冲突的评论].如果使用StyleCop,它会要求您将命令保留在命名空间内.
将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());
}
}
}Run Code Online (Sandbox Code Playgroud)
上面的代码将编译,但不清楚哪个Guid是实例化的.但是,如果using语句在namespace块内,则抛出编译器错误.有关更完整的讨论,请参阅相关的StyleCop文档.