Place Usings inside or outside of namespace?
本问题已经有最佳答案,请猛点这里访问。
我正在学习MVC WebAPI,我正在学习一个教程,一切都很顺利,直到我看到以下内容:
1 2 3 4 5 6 7 8 9 10 11 12 | namespace HelloWebAPI.Controllers { using HelloWebAPI.Models; using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Web.Http; public class ProductsController : ApiController {} |
我们通常做的是在开始时像这样添加资源范围:
1 2 3 4 5 6 7 8 9 10 11 12 13 | using HelloWebAPI.Models; using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Web.Http; namespace HelloWebAPI.Controllers { public class ProductsController : ApiController {} |
我的主管告诉我这没关系,应该没关系,因为这是一个官方的MS教程。
**我想知道的是,为什么这件事无关紧要,以便更好地了解它?**
有一点不同,虽然很小,但确实存在。
这都是关于编译器的名称解析序列。你可以在这里找到关于这个问题的好答案:
using应该在命名空间内部或外部
在第一种编译器的实践中,如果不能立即找到类型信息,在
您可以在C文件中定义多个命名空间。
将
将它们放在名称空间之外意味着它们应用于文件中的所有名称空间。
变量名的作用域只应用于包含变量名的最内部大括号中,而且更深层。
唯一的区别是使用语句的范围。如果在命名空间内使用using,那么这些using语句将包含在该命名空间下的所有文件中。如果使用命名空间之外的using语句,那么这些using语句将仅对当前文件有效。
文件1:
1 2 3 4 5 6 7 8 9 | namespace MyNamespace { using System; using System.IO; public MyClass { } } |
文件2:
1 2 3 4 5 6 | namespace MyNamespace { public MyClassV2 { } } |
在这个例子中,您不需要在文件2中为myClassv2添加using,因为myNamespace已经有了这些using语句。但是对于不同的名称空间,您需要添加using语句。