将命令放在命名空间的内部或外部?

Moo*_*oon 8 c# coding-style namespaces

我正在学习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
    {}
Run Code Online (Sandbox Code Playgroud)

我们通常做的是在开头添加资源\ 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
    {}
Run Code Online (Sandbox Code Playgroud)

我的主管告诉我它没关系,应该没问题,因为它是关于这个主题的官方MS教程.

**我想知道为什么这不重要,以便我对它有更好的理解?**

Tig*_*ran 8

有一个区别,小但有.

这完全取决于编译器所做的名称解析顺序.你可以在这里找到关于主题的好答案:

应该是否在命名空间内部或外部

在第一种情况编译器的实践中,如果无法立即找到类型信息,将在内部 声明的名称空间中进行搜索using.相反,在第二种情况下,将首先搜索实际的命名空间,然后仅在声明的外部搜索.


Pat*_*shu 5

您可以在一个 C# 文件中定义多个命名空间。

using语句放在命名空间内意味着它们仅在该文件的命名空间内使用。

将它们放在命名空间之外意味着它们适用于文件中的所有命名空间。

这是变量名称的范围如何仅适用于包含它们的最内部大括号和更深层次的情况。