命名空间和使用指令

发布于 2024-07-27 23:27:18 字数 294 浏览 8 评论 0原文

如果我有一个像这样的命名空间:

namespace MyApp.Providers
 {
    using System;
    using System.Collections.Generic;
    using System.Configuration;
    using System.Globalization;
  }

这是否意味着如果我创建具有相同命名空间的其他文件和类,则 using 语句将被共享,并且我不需要再次包含它们?

如果是的话,这不是让管理有点头疼吗?

If I have a namespace like:

namespace MyApp.Providers
 {
    using System;
    using System.Collections.Generic;
    using System.Configuration;
    using System.Globalization;
  }

Does this mean that if I create other files and classes with the same namespace, the using statements are shared, and I don't need to include them again?

If yes, isn't this a bit of a management headache?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

°如果伤别离去 2024-08-03 23:27:18

不,它只适用于文件内的命名空间部分。 不适用于命名空间内的所有文件。

如果将 using 语句放在命名空间之外,则无论命名空间如何,它都适用于整个文件。

它还将首先搜索命名空间内的Usings,然后再转到外部作用域。

No, it's only good for the namespace section inside the file. Not for all files inside the namespace.

If you put the using statement outside the namespace, then it applies to the entire file regardless of namespace.

It will also search the Usings inside the namespace first, before going to the outer scope.

一生独一 2024-08-03 23:27:18

您需要在要使用它们的每个文件中为要引用的任何类指定 using 指令,而无需限定。

参考

using 指令的范围是
仅限于其中的文件
出现。

You need to specify the using directive for any classes that you want to reference without qualification in each file where you want to use them.

Reference:

The scope of a using directive is
limited to the file in which it
appears.

赏烟花じ飞满天 2024-08-03 23:27:18

不,它没有,所以不,它不是。

考虑一下这样一个事实:在 namespace 声明之外,您位于全局命名空间中。 源文件该区域中的 using 语句是否会影响其他源文件中的全局命名空间?

No, it doesn't, and so no, it isn't.

Consider the fact that outside the namespace declaration, you are in the global namespace. Do using statements in that region of the source file affect the global namespace in other source files?

枫以 2024-08-03 23:27:18

不可以。您需要在每个类中包含命名空间(部分类除外)。

旁注:您正在将 using 语句放入命名空间中,这是一种非常好的做法。 这是非常好的语法。

保持良好的工作。

No. You'll need to include the namespaces in every class except on partial classes.

One side note: you're doing a very good practice of putting the using statements inside the Namespace. That's very good syntax.

Keep up the good work.

想你只要分分秒秒 2024-08-03 23:27:18

using 语句对于它们出现的代码文件是有效的,但有一点小小的改变; 如果将 using 语句放在命名空间内,它们将被限制在该命名空间的范围内,但仍然只能在同一代码文件内。

The using statements are valid for the code file in which they appear, with a minor twist; if you put the using statements inside the namespace, they are limited to the scope of that namespace, but still only within the same code file.

書生途 2024-08-03 23:27:18

使用仅适用于当前文件。 无论它们是在命名空间声明内部还是外部,差别很小:

类型的查找顺序如下:

  1. 从最里面的命名空间声明开始,
  2. 在当前命名空间中查找
  3. ,在当前命名空间的 usings 中查找
  4. ,向上到父命名空间声明并重复步骤 2

结果,该程序将正常编译:

namespace MyProject.Main {
    using System;

    class Program {
        public static void Main(string[] args) {
            Console.WriteLine("Hello, World!");
        }
    }
}

// in another file:
namespace MyProject.Console {
    class Test {}
}

但如果将 using System; 移至顶部,则编译将失败(MyProject.Console.WriteLine 不存在) )。

Usings only apply to the current file. Whether they're inside or outside the namespace declaration makes only a small difference:

The lookup order for types is as follows:

  1. start in the innermost namespace declaration
  2. look in the current namespace
  3. look in the usings of the current namespace
  4. go up to the parent namespace declaration and repeat from step 2

As a result, this program will compile fine:

namespace MyProject.Main {
    using System;

    class Program {
        public static void Main(string[] args) {
            Console.WriteLine("Hello, World!");
        }
    }
}

// in another file:
namespace MyProject.Console {
    class Test {}
}

But if you move the using System; to the top, then the compilation will fail (MyProject.Console.WriteLine doesn't exist).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文