如果我有一个像这样的命名空间:
namespace MyApp.Providers
{
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Globalization;
}
这是否意味着如果我创建具有相同命名空间的其他文件和类,则 using 语句是共享的,我不需要再次包含它们?
如果是的话,这不是有点让人头疼吗?
如果我有一个像这样的命名空间:
namespace MyApp.Providers
{
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Globalization;
}
这是否意味着如果我创建具有相同命名空间的其他文件和类,则 using 语句是共享的,我不需要再次包含它们?
如果是的话,这不是有点让人头疼吗?
不,它只对文件内的命名空间部分有用。不适用于命名空间内的所有文件。
如果将 using 语句放在命名空间之外,则它适用于整个文件,而与命名空间无关。
在进入外部范围之前,它还将首先搜索命名空间内的 Usings。
不,它没有,所以不,它不是。
考虑在namespace
声明之外,您位于全局命名空间中。using
源文件该区域中的语句会影响其他源文件中的全局命名空间吗?
不,您需要在每个类中包含命名空间,除了部分类。
附带说明:您将 using 语句放在命名空间中是一种非常好的做法。这是非常好的语法。
保持良好的工作。
using 语句对它们出现的代码文件有效,只是稍有不同;如果将 using 语句放在命名空间内,它们将被限制在该命名空间的范围内,但仍仅限于同一代码文件中。
Usings 仅适用于当前文件。无论它们是在命名空间声明的内部还是外部,都只有很小的区别:
类型的查找顺序如下:
结果,这个程序将编译得很好:
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 不存在)。