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

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

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

} finally {

cancelTsk.Wait (); cancelTokSrc.Dispose(); cancelTsk.Dispose();

}

Console.WriteLine();

}

}

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Если запрос отмСняСтся Π΄ΠΎ Π΅Π³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ, Ρ‚ΠΎ Π½Π° экран выводится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сообщСниС ΠΎΠ± ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ситуации.

Запрос ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π°, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ WithCancellation.

Π”Ρ€ΡƒΠ³ΠΈΠ΅ срСдства PLINQ

Как ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅, PLINQ прСдставляСт собой довольно ΠΊΡ€ΡƒΠΏΠ½ΡƒΡŽ подсистСму. Π­Ρ‚ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ отчасти Ρ‚ΠΎΠΉ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ PLINQ. Π’ PLINQ доступны ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ срСдства, ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ΄ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ запросы ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ. Π’Π°ΠΊ, ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° WithDegreeOf Parallelism () ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ максимальноС количСство процСссоров, выдСляСмых для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запроса, Π° ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° As Sequential () β€” Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ части ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ запроса. Если Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΏΠΎΡ‚ΠΎΠΊ, ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΎΡ‚ Ρ†ΠΈΠΊΠ»Π° foreach, Π½Π΅ трСбуСтся Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‚ΠΎ для этой Ρ†Π΅Π»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ForAll (). ВсС эти ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² классС ParallelEnumerable. А Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° PLINQ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ WithExecutionMode (), ΠΏΠ΅Ρ€Π΅Π΄Π°Π² Π΅ΠΌΡƒ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ ParallelExecutionMode . ForceParallelism.

Вопросы эффСктивности PLINQ

Π”Π°Π»Π΅ΠΊΠΎ Π½Π΅ всС запросы Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ быстрСС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ распараллСлСны. Как пояснялось Ρ€Π°Π½Π΅Π΅ Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ TPL, ΠΈΠ·Π΄Π΅Ρ€ΠΆΠΊΠΈ, связанныС с созданиСм ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΈΡ… исполнСниСм, ΠΌΠΎΠ³ΡƒΡ‚ "ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Ρ‚ΡŒ" всС прСимущСства, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π°Π΅Ρ‚ распараллСливаниС. Π’ΠΎΠΎΠ±Ρ‰Π΅ говоря, Ссли источник Π΄Π°Π½Π½Ρ‹Ρ… оказываСтся довольно ΠΌΠ΅Π»ΠΊΠΈΠΌ, Π° Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰Π°ΡΡΡ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… β€” ΠΎΡ‡Π΅Π½ΡŒ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΉ, Ρ‚ΠΎ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ Π½Π΅ привСсти ΠΊ ΡƒΡΠΊΠΎΡ€Π΅Π½ΠΈΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запроса. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π·Π° рСкомСндациями ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΌΡƒ вопросу слСдуСт ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ†ΠΈΠΈ Microsoft.

ГЛАВА 25 ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, пСрСчислитСли ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

Π’ этой Π³Π»Π°Π²Π΅ Ρ€Π΅Ρ‡ΡŒ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· самых Π²Π°ΠΆΠ½Ρ‹Ρ… ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… срСды .NET Framework: коллСкциях. Π’ C# коллСкция прСдставляСт собой ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π’ срСдС .NET Framework имССтся Π½Π΅ΠΌΠ°Π»ΠΎ интСрфСйсов ΠΈ классов, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ. ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡ программирования благодаря Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для создания Ρ†Π΅Π»ΠΎΠ³ΠΎ ряда Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ…, Π½ΠΎ ΠΏΠΎΡ€ΠΎΠΉ Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΈΡ… для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ структур Π΄Π°Π½Π½Ρ‹Ρ…. НапримСр, Π² срСду .NET Framework встроСны ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ динамичСских массивов, связных списков, стСков, ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ ΠΈ Ρ…Π΅Ρˆ-Ρ‚Π°Π±Π»ΠΈΡ†. ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ соврСмСнным тСхнологичСским срСдством, Π·Π°ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌ ΠΏΡ€ΠΈΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ внимания всСх, ΠΊΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π° Π‘#.

ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ сущСствовали Ρ‚ΠΎΠ»ΡŒΠΊΠΎ классы Π½Π΅ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ. Но с Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠΉ Π² вСрсии C# 2.0 срСда .NET Framework Π±Ρ‹Π»Π° Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ Π½ΠΎΠ²Ρ‹ΠΌΠΈ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹ΠΌΠΈ классами ΠΈ интСрфСйсами. Благодаря ввСдСнию ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ ΠΎΠ±Ρ‰Π΅Π΅ количСство классов ΠΈ интСрфСйсов ΡƒΠ΄Π²ΠΎΠΈΠ»ΠΎΡΡŒ. ВмСстС с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ распараллСливания Π·Π°Π΄Π°Ρ‡ (TPL) Π² вСрсии 4.0 срСды .NET Framework появился ряд Π½ΠΎΠ²Ρ‹Ρ… классов ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… для примСнСния Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° доступ ΠΊ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ осущСствляСтся ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². НСтрудно Π΄ΠΎΠ³Π°Π΄Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ интСрфСйс Collections API составляСт Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ срСды .NET Framework.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² настоящСй Π³Π»Π°Π²Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π΄Π²Π° срСдства, нСпосрСдствСнно связанныС с коллСкциями: пСрСчислитСли ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹. И Ρ‚Π΅ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΎΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ содСрТимому класса ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π² Ρ†ΠΈΠΊΠ»Π΅ foreach.

ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ

Π“Π»Π°Π²Π½ΠΎΠ΅ прСимущСство ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π³Ρ€ΡƒΠΏΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. ВсС ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ Π½Π° основС Π½Π°Π±ΠΎΡ€Π° Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… интСрфСйсов. НСкоторыС встроСнныС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚Π°ΠΊΠΈΡ… интСрфСйсов, Π² Ρ‚ΠΎΠΌ числС ArrayList, Hashtable, Stack ΠΈ Queue, ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² исходном Π²ΠΈΠ΄Π΅ ΠΈ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ, хотя ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² этом Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΊΡ€Π°ΠΉΠ½Π΅ Ρ€Π΅Π΄ΠΊΠΎ.

Π’ срСдС .NET Framework ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠΎΠ² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ: Π½Π΅ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹Π΅, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅, с поразрядной ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ, ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹Π΅ ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅. НСобобщСн-Π½Ρ‹Π΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ ряд основных структур Π΄Π°Π½Π½Ρ‹Ρ…, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ динамичСский массив, стСк, ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ словари, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Ρ‹ "ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅". Π’ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ Π½Π΅ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ Π²Π°ΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π² Π²ΠΈΠ΄Ρƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: ΠΎΠ½ΠΈ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ° obj ect.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½Π΅ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ для хранСния Π΄Π°Π½Π½Ρ‹Ρ… любого Ρ‚ΠΈΠΏΠ°, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ допускаСтся Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Ρ€Π°Π·Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π½Π΅ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Π½ΠΈΡ… хранятся ссылки Π½Π° Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° object. ΠšΠ»Π°ΡΡΡ‹ ΠΈ интСрфСйсы Π½Π΅ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ находятся Π² пространствС ΠΈΠΌΠ΅Π½ System.Collections.

Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π΄ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΈΠ»ΠΈ ΠΆΠ΅ Π΄Π΅Π»Π°ΡŽΡ‚ это ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ особым ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. НапримСр, ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ для ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… строк, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ список. Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ Π² пространствС ΠΈΠΌΠ΅Π½ System. Collections.Specialized.

Π’ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΌ интСрфСйсС Collections API ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° ΠΎΠ΄Π½Π° коллСкция с поразрядной ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ β€” это Bit Array. ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ Ρ‚ΠΈΠΏΠ° Bit Array ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ поразрядныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‚.Π΅. ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΌΠΈ разрядами, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ И ΠΈΠ»ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π΅ Π˜Π›Π˜, Π° ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΎΠ½Π° сущСствСнно отличаСтся своими возмоТностями ΠΎΡ‚ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ. ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ Ρ‚ΠΈΠΏΠ° Bit Array ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ Π² пространствС ΠΈΠΌΠ΅Π½ System. Collections.

ΠžΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… стандартных структур Π΄Π°Π½Π½Ρ‹Ρ…, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ связныС списки, стСки, ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΈ словари. Π’Π°ΠΊΠΈΠ΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ Π² силу ΠΈΡ… ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½ΠΎΠ³ΠΎ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π°. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π² ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π°ΠΊΠΈΠ΅ элСмСнты Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ совмСстимы ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ с Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠ΅ΠΉ. Благодаря этому ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ случайноС нСсовпадСниС Ρ‚ΠΈΠΏΠΎΠ². ΠžΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ Π² пространствС ΠΈΠΌΠ΅Π½ System.Collections.Generic.

ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ доступ ΠΊ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ. Π­Ρ‚ΠΎ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² пространствС ΠΈΠΌΠ΅Π½ System. Collections . Concurrent.

Π’ пространствС ΠΈΠΌΠ΅Π½ System. Collections . Obj ectModel находится Ρ‚Π°ΠΊΠΆΠ΅ ряд классов, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… созданиС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ собствСнных ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ.

ΠžΡΠ½ΠΎΠ²ΠΎΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‰ΠΈΠΌ для всСх ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ являСтся понятиС пСрСчислитСля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ поддСрТиваСтся Π² Π½Π΅ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹Ρ… интСрфСйсах IEnumerator ΠΈ IEnumerable, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹Ρ… интСрфСйсах IEnumerator<T> ΠΈ IEnumerable<T>. ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒ обСспСчиваСт стандартный способ ΠΏΠΎΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ доступа ΠΊ элСмСнтам ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΎΠ½ пСрСчисляСт содСрТимоС ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° обобщСнная ΠΈΠ»ΠΈ нСобобщСнная Ρ„ΠΎΡ€ΠΌΠ° интСрфСйса I Enumerable, поэтому элСмСнты любого класса ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ доступны посрСдством ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² интСрфСйсС IEnumerator ΠΈΠ»ΠΈ IEnumerator<T>. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ, внСся ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ измСнСния Π² ΠΊΠΎΠ΄ цикличСского обращСния ΠΊ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠ³ΠΎ обращСния ΠΊ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Π›ΡŽΠ±ΠΎΠΏΡ‹Ρ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ для ΠΏΠΎΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ обращСния ΠΊ содСрТимому ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π² Ρ†ΠΈΠΊΠ»Π΅ foreach ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒ.

ΠžΡΠ½ΠΎΠ²ΠΎΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‰ΠΈΠΌ для всСх ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ являСтся понятиС пСрСчислитСля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ поддСрТиваСтся Π² Π½Π΅ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹Ρ… интСрфСйсах IEnumerator ΠΈ IEnumerable, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹Ρ… интСрфСйсах IEnumerator<T> ΠΈ IEnumerable<T>. ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒ обСспСчиваСт стандартный способ ΠΏΠΎΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ доступа ΠΊ элСмСнтам ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΎΠ½ пСрСчисляСт содСрТимоС ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° обобщСнная ΠΈΠ»ΠΈ нСобобщСнная Ρ„ΠΎΡ€ΠΌΠ° интСрфСйса IEnumerable, поэтому элСмСнты любого класса ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ доступны посрСдством ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² интСрфСйсС IEnumerator ΠΈΠ»ΠΈ IEnumerator<T>. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ, внСся ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ измСнСния Π² ΠΊΠΎΠ΄ цикличСского обращСния ΠΊ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠ³ΠΎ обращСния ΠΊ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Π›ΡŽΠ±ΠΎΠΏΡ‹Ρ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ для ΠΏΠΎΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ обращСния ΠΊ содСрТимому ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π² Ρ†ΠΈΠΊΠ»Π΅ foreach ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒ.