.NET 命名空间和 using 语句 [重复]
Posted
技术标签:
【中文标题】.NET 命名空间和 using 语句 [重复]【英文标题】:.NET namespaces and using statements [duplicate] 【发布时间】:2010-10-22 03:50:08 【问题描述】:可能重复:Should Usings be inside or outside the namespace
有什么区别
namespace x
using y;
和
using y;
namespace x
?
【问题讨论】:
【参考方案1】:第一个 y 仅用于命名空间 x,第二个 y 用于整个文件,因此可能是其他命名空间。如果您为每个文件保留一个命名空间(我猜这是惯例),那么通常并没有真正的区别[但如果不同类型在不同的命名空间中具有相同的名称,请参阅 Marc 关于冲突的评论]。如果您使用 StyleCop,它会希望您将 usings 保留在命名空间内。
【讨论】:
实际上,我似乎记得可能有所不同... 如果在不同级别存在冲突类型等。 另外一个(更实际的)区别......其中一个可能会使 LINQ-to-SQL 代码生成器崩溃,而另一个则不会;-p【参考方案2】:将using
语句放在namespace
块内,将其范围限定为该块。这会影响很多事情。
-
正如@Steve Haigh 提到的,
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 以获得更完整的讨论。
【讨论】:
+1。那里有有趣的边缘案例。以上是关于.NET 命名空间和 using 语句 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
在 C# .cs 文件中放置 using 语句的位置[重复]
尝试从命名空间加载类您是不是忘记了另一个命名空间的“使用”语句?
创建一个新项目和捆绑包 - “您是不是忘记了另一个命名空间的 'use' 语句?”