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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «ПолноС руководство. Π‘# 4.0Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 110

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

И Π²-Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ…, Ρ€Π°Π΄ΠΈ наглядности ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° рассматриваСмая здСсь ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±Ρ‹Π»Π°Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π° Π½Π° Π΄Π²Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°. Π’ ΠΎΠ΄Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ содСрТится ΠΊΠΎΠ΄ объявлСния пространства ΠΈΠΌΠ΅Π½ Counter, Π° Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ β€” ΠΊΠΎΠ΄ самой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ NSDemo. Но ΠΎΠ±Π° Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π² Π΅Π΄ΠΈΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ». Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ исходного ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Π΄Π²Π° ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ пространства ΠΈΠΌΠ΅Π½ со своими собствСнными областями объявлСний. Когда оканчиваСтся дСйствиС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ пространстваимСн, возобновляСтся дСйствиС внСшнСго пространства ΠΈΠΌΠ΅Π½ β€” Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ с Counterэто глобальноС пространство ΠΈΠΌΠ΅Π½. Π Π°Π΄ΠΈ большСй ясности Π² ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… примСрахвсС пространства ΠΈΠΌΠ΅Π½, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ΡΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Π±ΡƒΠ΄ΡƒΡ‚ прСдставлСны Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈ Ρ‚ΠΎΠΌΠΆΠ΅ Ρ„Π°ΠΉΠ»Π΅. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΈΠΌΠ΅Ρ‚ΡŒ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ ΠΈΡ… допускаСтся Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ, Ρ‡Ρ‚ΠΎ практикуСтся Ρ‡Π°Ρ‰Π΅ Π² Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅.ΠŸΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΈΠΌΠ΅Π½ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ пространств ΠΈΠΌΠ΅Π½

Π“Π»Π°Π²Π½ΠΎΠ΅ прСимущСство пространств ΠΈΠΌΠ΅Π½ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π² Π½ΠΈΡ…ΠΈΠΌΠ΅Π½Π° Π½Π΅ Π²ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ Π² ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΌΠΈ Π·Π° ΠΈΡ… ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ. НапримСр,Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π΄Π²Π° пространства ΠΈΠΌΠ΅Π½. ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ ΠΈΠ· нихявляСтся прСдставлСнноС Ρ€Π°Π½Π΅Π΅ пространство ΠΈΠΌΠ΅Π½ Counter, Π° Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ β€” Counter2.Оба пространства ΠΈΠΌΠ΅Π½ содСрТат классы с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ CountDown, Π½ΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это Ρ€Π°Π·Π½Ρ‹Π΅ пространства, Ρ‚ΠΎ ΠΎΠ±Π° класса CountDown Π½Π΅ Π²ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ Π² ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ±Π° пространства ΠΈΠΌΠ΅Π½ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈ Ρ‚ΠΎΠΌ ΠΆΠ΅ Ρ„Π°ΠΉΠ»Π΅. Как пояснялось Π²Ρ‹ΡˆΠ΅, это Π²ΠΏΠΎΠ»Π½Π΅ допустимо. БСзусловно, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· этих пространств ΠΈΠΌΠ΅Π½ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», Ссли Π±Ρ‹ Π² этом Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π°ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ.// ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΈΠΌΠ΅Π½ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ ΠΈΠΌΠ΅Π½.using System;// ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ пространство ΠΈΠΌΠ΅Π½ 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; } }}// ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ пространство ΠΈΠΌΠ΅Π½ Counter2.namespace Counter2 { /* Π­Ρ‚ΠΎΡ‚ класс CountDown относится ΠΊ пространству ΠΈΠΌΠ΅Π½ Counter2 ΠΈ поэтому Π½Π΅ вступаСт Π² ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ с Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ классом ΠΈΠ· пространства ΠΈΠΌΠ΅Π½ Counter. */ class CountDown { public void Count() { Console.WriteLine("Π­Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Count() ΠΈΠ· " + "пространства ΠΈΠΌΠ΅Π½ Counter2."); } }}class NSDemo2 { static void Main() { // Π­Ρ‚ΠΎ класс CountDown ΠΈΠ· пространства ΠΈΠΌΠ΅Π½ Counter. Counter.CountDown cd1 = new Counter.CountDown(10); // Π­Ρ‚ΠΎ класс CountDown ΠΈΠ· пространства ΠΈΠΌΠ΅Π½ Counter2. Counter2.CountDown cd2 = new Counter2.CountDown(); int i; do { i = cd1.Count(); Console.Write(i + " "); } while(i > 0); Console.WriteLine(); cd2.Count(); }}

Π’ΠΎΡ‚ ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.10 9 8 7 6 5 4 3 2 1 0Π­Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Count() ΠΈΠ· пространства ΠΈΠΌΠ΅Π½ Counter2.

Как слСдуСт ΠΈΠ· ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, класс CountDown ΠΈΠ· пространстваимСн Counter сущСствуСт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ класса Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ названия ΠΈΠ· пространства ΠΈΠΌΠ΅Π½Counter2, ΠΈ поэтому ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ ΠΈΠΌΠ΅Π½ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚. НСсмотря Π½Π° всю простоту Π΄Π°Π½Π½ΠΎΠ³ΠΎΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, ΠΎΠ½ наглядно ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ удаСтся ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π° ΠΈΠΌΠ΅Π½ Π² собствСнном ΠΊΠΎΠ΄Π΅ ΠΈ ΠΊΠΎΠ΄Π΅, написанном Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ, помСстив классы с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Π² Ρ€Π°Π·Π½Ρ‹Π΅ пространства ΠΈΠΌΠ΅Π½.Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° using

Если Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ частыС ссылки Π½Π° Ρ‡Π»Π΅Π½Ρ‹ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ пространстваимСн, Ρ‚ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ это пространство всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° трСбуСтся ссылка Π½Π° Π½Π΅Π³ΠΎ, Π½Π΅ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ. ΠŸΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Ρ‚ΡŒ это Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° using. Π’ ΠΏΠΎΠ΄Π°Π²Π»ΡΡŽΡ‰Π΅ΠΌ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ²ΡˆΠΈΡ…ΡΡ Ρ€Π°Π½Π΅Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этой Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ дСлалось Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ глобальноС для C# пространство ΠΈΠΌΠ΅Π½ System, поэтомуона отчасти Π²Π°ΠΌ ΡƒΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΠ°. Как ΠΈ слСдовало ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ usingΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌΠΈ вновь создаваСмыС пространства ΠΈΠΌΠ΅Π½.

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Π²Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ using. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° пСрвая ΠΈΠ· Π½ΠΈΡ…:using имя;

Π³Π΄Π΅ имя ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ имя Ρ‚ΠΎΠ³ΠΎ пространства ΠΈΠΌΠ΅Π½, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ трСбуСтся ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ. ВсС Ρ‡Π»Π΅Π½Ρ‹, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ пространствС ΠΈΠΌΠ΅Π½, становятся Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌΠΈ, ΠΈ поэтому ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ опрСдСлСния ΠΈΡ… ΠΈΠΌΠ΅Π½.Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ using Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π² самом Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° исходного ΠΊΠΎΠ΄Π°ΠΏΠ΅Ρ€Π΅Π΄ Π»ΡŽΠ±Ρ‹ΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ объявлСниями ΠΈΠ»ΠΈ ΠΆΠ΅ Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ‚Π΅Π»Π° пространства ΠΈΠΌΠ΅Π½.

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Π°Ρ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° являСтся Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΌ с Ρ†Π΅Π»ΡŒΡŽ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ using, Π΄Π΅Π»Π°ΡŽΡ‰Π΅ΠΉΠ²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ создаваСмоС пространство ΠΈΠΌΠ΅Π½.// ΠŸΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ using.using System;// Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ пространство ΠΈΠΌΠ΅Π½ Counter.using 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; } }}class NSDemo3 { static void Main() { // Π’Π΅ΠΏΠ΅Ρ€ΡŒ класс CountDown ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован нСпосрСдствСнно. CountDown cd1 = new CountDown(10); int i; do { i = cd1.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 cd1 = 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 cd1 = new MyCounter(10); int i; do { i = cd1.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 cd1 = new MyCounter(10);Аддитивный Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ пространств ΠΈΠΌΠ΅Π½