Означает ли using System.Text;
, что я использую одно пространство имен с именем «System.Text» или что я использую пространство имен «Текст», вложенное в пространство имен «Система»?
Последний.Вы используете пространство имен «Текст», вложенное в пространство имен «Система».
Обратите внимание, что когда вы говорите
namespace Foo.Bar.Blah
{
class C
{
...
, это просто краткий способ записи
namespace Foo
{
namespace Bar
{
namespace Blah
{
class C
{
...
Пространства имен имеют только «простые» имена.
если у нас есть явная директива 'using' для каждого пространства имен, которое мы используем?
Как правило, да, да.В некоторых ситуациях вы можете этого не делать.Например, если у вас есть два пространства имен, которые оба содержат тип с одним и тем же именем, и вы хотите использовать типы из обоих пространств имен;в этом случае может быть слишком запутанным иметь «использование» двух пространств имен.Кроме того, «использование» вводит методы расширения в игру;если есть методы расширения, которые вы не хотите связать, не включайте пространство имен, в котором они содержатся.
, если «Текст» вложен в «Систему», почему только«Использование системы» включает в себя все пространства имен?
Я не понимаю вопроса, как он сформулирован.Я думаю, может быть, вы спрашиваете:
Почему using System;
не делает простое имя Text
преобразованным во вложенное пространство имен?
То есть, почему это не работает:
namespace Foo
{
namespace Bar
{
class Blah {}
}
}
В другом файле:
using Foo;
class Abc : Bar.Blah {}
using Foo;
включает только types объявлены непосредственно внутри Foo.Он не содержит пространств имен , объявленных непосредственно внутри Foo.Разработчики C # думали, что слишком сложно вводить пространства имен «в область видимости», как это;обычно люди используют директивы using
, чтобы "* охватить" типов .