CountDown cd = new CountDown(10); CountUp cu = new CountUp(8);
int i; do {
i = cd.Count ;
Console^.Write (i + " ;
} -while (i > 0) ;
Console.WriteLine ;
do {
i = cu.Count ;
Console.Write(i + " ");
} while(i < cu.Target);
}
}
Вот к какому результату приводит выполнение этой программы.
10 9876543210 012345678
Обратите также внимание на то, что директива
using Counter;
делает видимым все содержимое пространства именCounter.Это дает возможность обращаться к классамCountDownиCountUpнепосредственно, т.е. без дополнительного указания пространства имен. При этом разделение пространства именCounterна две части не имеет никакого значения.
Вложенные пространства имен
Одно пространство имен может быть вложено в другое. В качестве примера рассмотрим следующую программу.
// Вложенные пространства имен.
using System;
namespace NS1 { class ClassA {
public ClassA {
Console.WriteLine("Конструирование класса ClassA");
}
}
namespace NS2 { // вложенное пространство имен class ClassB {
public ClassB {
Console.WriteLine("Конструирование класса ClassB");
}
}
}
}
class NestedNSDemo { static void Main { .
NSl.ClassA a = new NS1.ClassA;
// NS2.ClassB b = new NS2.ClassB ; // Неверно!!! Пространство NS2 невидимо NS1.NS2.ClassB b = new NS1.NS2.ClassB; // Верно!
}
}
Выполнение этой программы дает следующий результат.
Конструирование класса ClassA Конструирование класса ClassB
В этой программе пространство именNS2вложено в пространство именNS1.Поэтому для обращения к классуClassBнеобходимо дополнительно указать пространства именNS1иNS2.Указания одного лишь пространства именNS2для этого недостаточно. Как следует из приведенного выше примера, пространства имен дополнительно указываются через точку. Следовательно, для обращения к классуClassBв методеMain необходимо указать его полное имя —NSl.NS2.ClassB.
Пространства имен могут быть вложенными больше, чем на два уровня. В этом случае член вложенного пространства имен должен быть дополнительно определен с помощью всех охватывающих пространств имен.
Вложенные пространства имен можно указать в одном оператореnamespace,разделив их точкой. Например, вложенные пространства имен
namespace OuterNS { namespace InnerNS {
// ...
}
}
могут быть указаны следующим образом.
namespace OuterNS.InnerNS {
}
Глобальное пространство имен