将Usings放在命名空间内部还是外部? [复制]
Posted
技术标签:
【中文标题】将Usings放在命名空间内部还是外部? [复制]【英文标题】:Place Usings inside or outside of namespace? [duplicate] 【发布时间】:2013-03-30 04:04:24 【问题描述】:我正在学习 MVC WebAPI,我正在学习一个教程,一切都很顺利,直到我看到以下内容:
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
我们通常的做法是在开头添加resources\scope,如下所示:
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 教程。
** 我想知道为什么这无关紧要,以便我更好地理解它? **
【问题讨论】:
请更新您的标题meta.stackexchange.com/questions/10647/… 【参考方案1】:唯一的区别在于 using 语句的范围。如果您在命名空间内使用 using,则这些 using 语句将包含在该命名空间下的所有文件中。如果你在命名空间之外使用 using 语句,那么这些 using 语句将仅对当前文件有效。
文件 1:
namespace MyNamespace
using System;
using System.IO;
public MyClass
文件 2:
namespace MyNamespace
public MyClassV2
在此示例中,您无需在文件 2 中为 MyClassV2 添加 using,因为 MyNamespace 已经具有这些 using 语句。但是对于不同的命名空间,您需要添加 using 语句。
【讨论】:
你真的试过这个吗? 这是错误且具有误导性的答案。 这是错误的!【参考方案2】:有区别,虽小但有。
这都是关于编译器进行名称解析的顺序。 您可以在这里找到关于主题的好答案:
Should Usings be inside or outside the namespace
在第一种情况编译器的实践中,如果无法立即找到类型信息,
将在 inside using
声明的命名空间中进行搜索。相反,在第二种情况下,将首先在实际的命名空间中搜索,after 只在声明的外部进行搜索。
【讨论】:
用简单的话回答好。谢谢。【参考方案3】:您可以在一个 C# 文件中定义多个命名空间。
将using
语句放在命名空间内意味着它们仅在该文件的该命名空间内使用。
将它们放在命名空间之外意味着它们适用于文件中的所有命名空间。
这有点像变量名的范围仅适用于包含它们的最内层的大括号。
【讨论】:
以上是关于将Usings放在命名空间内部还是外部? [复制]的主要内容,如果未能解决你的问题,请参考以下文章