Используются только для текущего файла. Независимо от того, находятся они внутри или вне объявления пространства имен, разница будет незначительной:
Порядок поиска типов следующий:
- начало в самой внутренней декларации пространства имен
- посмотрите в текущем пространстве имен
- посмотрите на использование текущего пространства имен
- перейти к объявлению родительского пространства имен и повторить с шага 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 не существует).