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

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

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

Π’ΠΎΡ‚ ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ для ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ вСрсии.Π­Ρ‚ΠΎ Π½Π΅ пробная ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ вСрсия.ΠŸΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΠ΅Ρ‚ Π²ΠΎ всСх вСрсиях.

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ TRIAL Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½, ΠΈ поэтому Ρ‡Π°ΡΡ‚ΡŒ #else Π²Ρ‚ΠΎΡ€ΠΎΠΉ условной ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠ΄Π° Π½Π΅ компилируСтся.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #else ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΊΠΎΠ½Π΅Ρ† Π±Π»ΠΎΠΊΠ° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #if ΠΈ Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя β€” Π½Π°Ρ‡Π°Π»ΠΎ Π±Π»ΠΎΠΊΠ° самой Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #else. Π­Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ с любой Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ #if ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ связана Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #endif. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, с любой Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ #if ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ связана Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #else.

ΠžΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ #elif ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ "ΠΈΠ½Π°Ρ‡Π΅ Ссли", Π° сама Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #elif опрСдСляСт ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ условных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ if-else-if для ΠΌΠ½ΠΎΠ³ΠΎΠ²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎΠΉ компиляции.ПослС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #elif указываСтся ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Если это Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ истинно, Ρ‚ΠΎ компилируСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π΄Π°Π»Π΅Π΅ ΠΊΠΎΠ΄ΠΎΠ²Ρ‹ΠΉ Π±Π»ΠΎΠΊ, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ выраТСния Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #elif Π½Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ΡΡ. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС провСряСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉΠΏΠΎ порядку Π±Π»ΠΎΠΊ. Если ΠΆΠ΅ Π½ΠΈ ΠΎΠ΄Π½Ρƒ ΠΈΠ· Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² #elif Π½Π΅ удаСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ, Ρ‚ΠΎ ΠΏΡ€ΠΈΠ½Π°Π»ΠΈΡ‡ΠΈΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #else выполняСтся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°, связанная с этой Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ, Π° ΠΈΠ½Π°Ρ‡Π΅ Π½Π΅ компилируСтся Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #if.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° общая Ρ„ΠΎΡ€ΠΌΠ° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #elif.#if ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π½ΠΎΠ΅_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²#elif ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π½ΠΎΠ΅_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²#elif ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π½ΠΎΠ΅_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² // ...#endif

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ дСмонстрируСтся ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #elif.// ΠŸΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #elif.#define RELEASEusing System;class Test { static void Main() { #if EXPERIMENTAL Console.WriteLine("ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ для ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ вСрсии."); #elif RELEASE Console.WriteLine("ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ для ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ вСрсии."); #else Console.WriteLine("ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ для Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ тСстирования."); #endif #if TRIAL && !RELEASE Console.WriteLine("ΠŸΡ€ΠΎΠ±Π½Π°Ρ вСрсия."); #endif Console.WriteLine("ΠŸΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΠ΅Ρ‚ Π²ΠΎ всСх вСрсиях."); }}

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π²Ρ‹Π΄Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ для ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ вСрсии.ΠŸΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΠ΅Ρ‚ Π²ΠΎ всСх вСрсиях.Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #undef

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #undef удаляСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π°Π½Π΅Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€.Π­Ρ‚ΠΎ, ΠΏΠΎ сущСству, ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ становится "Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ". НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° общая Ρ„ΠΎΡ€ΠΌΠ° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #undef.#undef ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€

Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°.#define SMALL#if SMALL // ...#undef SMALL// Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ SMALL Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½.

ПослС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #undef ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ SMALL ΡƒΠΆΠ΅ оказываСтся Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ.

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #undef примСняСтся Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ для Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚Π΅Ρ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ… ΠΊΠΎΠ΄Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ.Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #error

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #error Π²Ρ‹Π½ΡƒΠΆΠ΄Π°Π΅Ρ‚ компилятор ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ. Она слуТит восновном для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° общая Ρ„ΠΎΡ€ΠΌΠ° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #error.#error сообщСниС_ΠΎΠ±_ошибкС

Когда Π² ΠΊΠΎΠ΄Π΅ встрСчаСтся Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #error, выводится сообщСниС ΠΎΠ± ошибкС. НапримСр, ΠΊΠΎΠ³Π΄Π° компилятору встрСчаСтся строка ΠΊΠΎΠ΄Π°#error Π­Ρ‚ΠΎ тСстовая ошибка!

компиляция прСрываСтся ΠΈ выводится сообщСниС "Π­Ρ‚ΠΎ тСстовая ошибка!".Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #warning

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #warning дСйствуСт Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅ #error, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌΡ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, Π° Π½Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, компиляция нСпрСрываСтся. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° общая Ρ„ΠΎΡ€ΠΌΠ° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #warning.#warning ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽΡ‰Π΅Π΅_сообщСниСДирСктива #line

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #line Π·Π°Π΄Π°Π΅Ρ‚ Π½ΠΎΠΌΠ΅Ρ€ строки ΠΈ имя Ρ„Π°ΠΉΠ»Π°, содСрТащСго эту Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ.НомСр строки ΠΈ имя Ρ„Π°ΠΉΠ»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ ошибок ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉΠ²ΠΎ врСмя компиляции. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° общая Ρ„ΠΎΡ€ΠΌΠ° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #line.#line Π½ΠΎΠΌΠ΅Ρ€ "имя_Ρ„Π°ΠΉΠ»Π°"

Π˜ΠΌΠ΅ΡŽΡ‚ΡΡ Π΅Ρ‰Π΅ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #line. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΈΠ· Π½ΠΈΡ… ΠΎΠ½Π° указываСтся ΡΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом default, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΠΈΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ Π½ΡƒΠΌΠ΅Ρ€Π°Ρ†ΠΈΠΈ строк Π² исходноС состояниС, ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.#line default

А Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #line указываСтся с ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом hidden.ΠŸΡ€ΠΈ пошаговой ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ строки ΠΊΠΎΠ΄Π°, находящиСся ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ#line hidden

ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ #line Π±Π΅Π· ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова hidden, ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ.Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #region ΠΈ #endregion

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² #region ΠΈ #endregion опрСдСляСтся ΠΎΠ±Π»Π°ΡΡ‚ΡŒ, которая разворачиваСтся ΠΈΠ»ΠΈ сворачиваСтся ΠΏΡ€ΠΈ структурировании исходного ΠΊΠΎΠ΄Π° Π² ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ срСдС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Visual Studio. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° общая Ρ„ΠΎΡ€ΠΌΠ° этих Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²:#region тСкст // ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°#endregion тСкст

Π³Π΄Π΅ тСкст ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½ΡƒΡŽ строку.Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #pragma

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #pragma инструкции Π·Π°Π΄Π°ΡŽΡ‚ΡΡ компилятору Π² Π²ΠΈΠ΄Π΅ ΠΎΠΏΡ†ΠΈΠΉ.НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° общая Ρ„ΠΎΡ€ΠΌΠ° этой Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹:#pragma опция

Π³Π΄Π΅ опция ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡƒΡŽ компилятору.

Π’ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ вСрсии C# прСдусмотрСны Π΄Π²Π΅ ΠΎΠΏΡ†ΠΈΠΈ для Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #pragma. ΠŸΠ΅Ρ€Π²Π°ΡΠΈΠ· Π½ΠΈΡ…, warning, слуТит для Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π·Π°ΠΏΡ€Π΅Ρ‚Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ состороны компилятора. Она ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π²Π΅ Ρ„ΠΎΡ€ΠΌΡ‹:#pragma warning disable прСдупрСТдСния#pragma warning restore прСдупрСТдСния

Π³Π΄Π΅ прСдупрСТдСния ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ раздСляСмый запятыми список Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ. Для ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ прСдупрСТдСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ опция disable, Π° для Π΅Π³ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ β€” опция restore.

НапримСр, Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π½ΠΈΠΆΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅ #pragma запрСщаСтся Π²Ρ‹Π΄Π°Ρ‡Π° прСдупрСТдСния β„–168, ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»ΡΡŽΡ‰Π΅Π³ΠΎ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ пСрСмСнная объявлСна, Π½ΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ.#pragma warning disable 168

Π’Ρ‚ΠΎΡ€ΠΎΠΉ для Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #pragma являСтся опция checksum. Она слуТит для формирования ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… ASP.NET. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π΅Π΅ общая Ρ„ΠΎΡ€ΠΌΠ°:#pragma checksum "имя_Ρ„Π°ΠΉΠ»Π°" "{GUID}" "ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ_сумма"

Π³Π΄Π΅ имяфайла ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ имя Ρ„Π°ΠΉΠ»Π°; GUID β€” глобально ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ связано имяфайла; ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ_сумма β€” ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠ΅ число, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΡƒΡŽ сумму. Π£ этой ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Ρ‡Π΅Ρ‚Π½ΠΎΠ΅ число Ρ†ΠΈΡ„Ρ€.Π‘Π±ΠΎΡ€ΠΊΠΈ ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ доступа internal

Π‘Π±ΠΎΡ€ΠΊΠ° являСтся Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ программирования Π½Π° Π‘#. Она прСдставляСтсобой ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько Ρ„Π°ΠΉΠ»ΠΎΠ², содСрТащих всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ свСдСния ΠΎ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π΅Π΅ вСрсии. Π‘Π±ΠΎΡ€ΠΊΠΈ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ основу срСды .NET. Они ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ для Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ³ΠΎ взаимодСйствия ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΌΠ΅ΠΆΡŠΡΠ·Ρ‹ΠΊΠΎΠ²ΠΎΠΉ возмоТности взаимодСйствия ΠΈ управлСния вСрсиями. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, сборки ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΠΎΠ±Π»Π°ΡΡ‚ΡŒ дСйствия ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

Π‘Π±ΠΎΡ€ΠΊΠ° состоит ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ². ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π» прСдставляСт собой Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΡŽ сборки. ДСкларация содСрТит свСдСния ΠΎ самой сборкС. К этой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ относится, Π² частности, имя сборки, Π½ΠΎΠΌΠ΅Ρ€ Π΅Π΅ вСрсии, свСдСния ΠΎ соотвСтствии Ρ‚ΠΈΠΏΠΎΠ²ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Π½ΠΎΠΉ срСды (язык ΠΈ Ρ€Π΅Π³ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ стандарты). Π’Ρ‚ΠΎΡ€ΠΎΠΉ раздСлсборки содСрТит ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠΎΠ², Ρ‚.Π΅. свСдСния ΠΎ Ρ‚ΠΈΠΏΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π²ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Π‘Ρ€Π΅Π΄ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… прСимущСств ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠΎΠ² ΡΠΏΠΎΡΠΎΠ±ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΌΠ΅ΠΆΡŠΡΠ·Ρ‹ΠΊΠΎΠ²ΠΎΠΉ возмоТности взаимодСйствия. Π’Ρ€Π΅Ρ‚ΠΈΠΉ Ρ€Π°Π·Π΄Π΅Π» сборки содСрТит ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉΠΊΠΎΠ΄ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ MSIL (Microsoft Intermediate Language β€” ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ язык ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ†ΠΈΠΈ Microsoft). И Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π» сборки содСрТит рСсурсы, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ.

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

Π£ сборок имССтся ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… особСнностСй, ΠΈ с Π½ΠΈΠΌΠΈ связано Π½Π΅ΠΌΠ°Π»ΠΎ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ…Π²ΠΎΠΏΡ€ΠΎΡΠΎΠ² программирования, Π½ΠΎ, ΠΊ соТалСнию, ΠΈΡ… обсуТдСниС Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ этойкниги. Π’Π΅Π΄ΡŒ сборки ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ процСсса Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния Π² срСдС .NET, Π½ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΎΠ½ΠΈ Π½Π΅ относятся ΠΊ срСдствам языка Π‘#.Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π² C# имССтся ΠΎΠ΄Π½ΠΎ срСдство, нСпосрСдствСнно связанноС со сборкой. Π­Ρ‚ΠΎΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ доступа internal, рассматриваСмый Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅.ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ доступа internal