Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«C# 4.0 ΠΏΠΎΠ»Π½ΠΎΠ΅ руководство - 2011Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 121

Автор Π“Π΅Ρ€Π±Π΅Ρ€Ρ‚ Π¨ΠΈΠ»Π΄Ρ‚

// ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ Π²Ρ‹Ρ‡ΠΈΡ‚Π°ΡŽΡ‰ΠΈΠΉ счСтчик, class CountDown { int val;

public CountDown(int n) { val = n;

}

public void Reset(int n) { val = n;

}

public int Count ()    {

if(val > 0) return valβ€”; else return 0;

}

}

}

class NSDemo3 {

static void Main() {

// Π’Π΅ΠΏΠ΅Ρ€ΡŒ класс CountDown ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован нСпосрСдствСнно. CountDown cdl = new CountDown(10); int i;

do {

i = cdl.Count ();

Console.Write (i + " ") ;

} while (i > 0);

Console.WriteLine ();

CountDown cd2 = new CountDown (20);

do {

i = cd2.Count ();

Console.Write (i + " ");

} while (i > 0);

Console.WriteLine ();

cd2.Reset(4) ; do {

i = cd2.Count ();

Console.Write(i + " ");

} while (i > 0);

Console.WriteLine ();

}

}

Π’ эту Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ внСсСны Π΄Π²Π° сущСствСнных измСнСния. ΠŸΠ΅Ρ€Π²ΠΎΠ΅ ΠΈΠ· Π½ΠΈΡ… состоит Π² ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ using Π² самом Π½Π°Ρ‡Π°Π»Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.

using Counter;

Благодаря этому становится Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ пространство ΠΈΠΌΠ΅Π½ Counter. Π’Ρ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ класс CountDown большС Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ пространства ΠΈΠΌΠ΅Π½ Counter, ΠΊΠ°ΠΊ дСмонстрируСт привСдСнная Π½ΠΈΠΆΠ΅ строка ΠΊΠΎΠ΄Π° ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Main ().

CountDown cdl = new CountDown(10);

Π’Π΅ΠΏΠ΅Ρ€ΡŒ пространство ΠΈΠΌΠ΅Π½ Counter становится Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ, ΠΈ поэтому класс CountDown ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован нСпосрСдствСнно.    -

РассматриваСмая здСсь ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ Π²Π°ΠΆΠ½ΠΎΠ΅ ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ: ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ пространства ΠΈΠΌΠ΅Π½ Π½Π΅ отмСняСт дСйствиС Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ. Когда пространство ΠΈΠΌΠ΅Π½ дСлаСтся Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ, это просто Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ содСрТимоС Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ опрСдСлСния ΠΈΠΌΠ΅Π½. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ±Π° пространства ΠΈΠΌΠ΅Π½, System ΠΈ Counter, становятся Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌΠΈ.

Вторая Ρ„ΠΎΡ€ΠΌΠ° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ using

Вторая Ρ„ΠΎΡ€ΠΌΠ° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ using позволяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ имя (Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ псСвдоним) Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ пространства ΠΈΠΌΠ΅Π½. Π­Ρ‚Π° Ρ„ΠΎΡ€ΠΌΠ° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π½ΠΈΠΆΠ΅:

using псСвдоним = имя;

Π³Π΄Π΅ псСвдоним становится Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ‚ΠΈΠΏΠ° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΠΈΠΏΠ° класса) ΠΈΠ»ΠΈ пространства ΠΈΠΌΠ΅Π½, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠ°ΠΊ имя. ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ псСвдоним Π±ΡƒΠ΄Π΅Ρ‚ создан, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован вмСсто ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΉ с Ρ†Π΅Π»ΡŒΡŽ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ созданиС ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ псСвдонима MyCounter вмСсто составного ΠΈΠΌΠ΅Π½ΠΈ Counter.CountDown.

// ΠŸΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ псСвдонима, using System;

// Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ псСвдоним для составного ΠΈΠΌΠ΅Π½ΠΈ Counter.CountDown. using MyCounter = Counter.CountDown;

// ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ пространство ΠΈΠΌΠ΅Π½ для счСтчиков, namespace Counter {

// ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ Π²Ρ‹Ρ‡ΠΈΡ‚Π°ΡŽΡ‰ΠΈΠΉ счСтчик, class CountDown { int val;

public CountDown(int n) { val = n;

}

public void Reset(int n) { val = n;

} '

public int Count()    {

if(val > 0) return val β€” ; else return 0;

}

}

}

class NSDemo4 {

static void Main() {

// Π—Π΄Π΅ΡΡŒ ΠΈ Π΄Π°Π»Π΅Π΅ псСвдоним MyCounter ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ // вмСсто составного ΠΈΠΌΠ΅Π½ΠΈ Counter.CountDown.

MyCounter cdl = new MyCounter(10); int i;

do {

i = cdl... Count() ;

Console.Write(i + " ");

} while (i > 0);

Console.WriteLine () ;

MyCounter cd2 = new MyCounter (20);

do {

i = cd2.Count ();

Console.Write (i + " ");

} while (i > 0);

Console.WriteLine ();

cd2.Reset (4); do {

i = cd2.Count ();

Console.Write (i + " ");

} while (i > 0);

Console.WriteLine ();

}

}

ПсСвдоним MyCounter создаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°.

using MyCounter = Counter.CountDown;

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ псСвдоним Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π² качСствС Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ класса Counter. CountDown, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для объявлСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ опрСдСлСния ΠΈΠΌΠ΅Π½ΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса. НапримСр, Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строкС ΠΊΠΎΠ΄Π° ΠΈΠ· рассматриваСмой здСсь ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ создаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса CountDown.

MyCounter cdl = new MyCounter (10);

Аддитивный Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ пространств ΠΈΠΌΠ΅Π½

П04 ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ нСсколько пространств ΠΈΠΌΠ΅Π½. Π­Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ пространство ΠΈΠΌΠ΅Π½ ΠΏΠΎ нСскольким Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ„Π°ΠΉΠ»Π° исходного ΠΊΠΎΠ΄Π°. НапримСр, Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π΄Π²Π° пространства ΠΈΠΌΠ΅Π½ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎΠ΄ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ Counter. Одно ΠΈΠ· Π½ΠΈΡ… содСрТит класс CountDown, Π° Π΄Ρ€ΡƒΠ³ΠΎΠ΅ β€” класс CountUp. Π’ΠΎ врСмя компиляции содСрТимоС ΠΎΠ±ΠΎΠΈΡ… пространств ΠΈΠΌΠ΅Π½ Counter складываСтся.

// Аддитивный Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ пространств ΠΈΠΌΠ΅Π½, using System;

// Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ пространство ΠΈΠΌΠ΅Π½ Counter, using Counter;

// Π­Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎ пространство ΠΈΠΌΠ΅Π½ Counter.

namespace Counter {

// ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ Π²Ρ‹Ρ‡ΠΈΡ‚Π°ΡŽΡ‰ΠΈΠΉ счСтчик, class CountDown { int val;

public CountDown(int n) { val = n;

}

public void Reset(int n) { val = n;

}

public int Count()    {

if(val > 0) return valβ€”; else return 0;

}

}

}

//А это Π΄Ρ€ΡƒΠ³ΠΎΠ΅ пространство ΠΈΠΌΠ΅Π½ Counter, namespace Counter {

// ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΡΡƒΠΌΠΌΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ счСтчик, class CountUp { int val; int target;

public int Target { get{

return target;

}

}

public CountUp(int n) { target = n; val = 0;

}

public void Reset(int n) { target = n; val = 0;

}

public int Count()    {

if(val < target) return val++;

else return target;

}

}

}

class NSDemo5 {

static void Main() {

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 {

П ...