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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π―Π—Π«Πš ΠŸΠ ΠžΠ“Π ΠΠœΠœΠ˜Π ΠžΠ’ΠΠΠ˜Π― Π‘# 2005 И ΠŸΠ›ΠΠ’Π€ΠžΠ ΠœΠ .NET 2.0. 3-Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 2

Автор Π­Π½Π΄Ρ€ΡŽ ВроСлсСн

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΈ Π²Ρ‹ Π²ΠΏΡ€Π°Π²Π΅ это ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ, Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ½ΠΈΠ³ΠΈ содСрТит нСсколько Π³Π»Π°Π² с ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½ΠΎΠ²Ρ‹ΠΌ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠΌ (Π² частности Π³Π»Π°Π²Ρƒ, ΠΏΠΎΡΠ²ΡΡ‰Π΅Π½Π½ΡƒΡŽ синтаксису ΠΈ сСмантикС CIL) ΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС спСцифичСских возмоТностСй .NET2.0. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, послС всСх сдСланных ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΎΠΊ, ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠΉ характСристикС содСрТимого ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΠΎ частям ΠΈ Π³Π»Π°Π²Π°ΠΌ.

Π§Π°ΡΡ‚ΡŒ 1. ΠžΠ±Ρ‰ΠΈΠ΅ свСдСния ΠΎ языкС C# ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ .NET

ЦСлью этой части ΠΊΠ½ΠΈΠ³ΠΈ являСтся описаниС Π±Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² функционирования ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ .NET, систСмы Ρ‚ΠΈΠΏΠΎΠ² .NET я Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… срСдств Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΡ€ΠΈ создании ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ .NET (ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… срСдств ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°ΠΌΠΈ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ). Π—Π΄Π΅ΡΡŒ ΠΆΠ΅ прСдставлСны Π±Π°Π·ΠΎΠ²Ρ‹Π΅ возмоТности языка программирования C#.

Π“Π»Π°Π²Π° 1. Ѐилософия .NET

ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» этой Π³Π»Π°Π²Ρ‹ являСтся Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚ΠΎΠΌ для понимания всСго ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° ΠΊΠ½ΠΈΠ³ΠΈ. Π“Π»Π°Π²Π° начинаСтся с обсуТдСния Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… возмоТностСй Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² срСдС Windows ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° нСдостатки этого, использовавшСгося Ρ€Π°Π½Π΅Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°. Но Π³Π»Π°Π²Π½ΠΎΠΉ Ρ†Π΅Π»ΡŒΡŽ Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Ρ‹ являСтся знакомство с Π½Π°Π±ΠΎΡ€ΠΎΠΌ "ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ²" .NET, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ CLR (Common Language Runtime – общСязыковая срСда выполнСния), CIS (Common Type System – общая систСма Ρ‚ΠΈΠΏΠΎΠ²), CLS (Common Language Specification – общСязыковыС спСцификации) ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… классов. Π—Π΄Π΅ΡΡŒ ΠΆΠ΅ прСдлагаСтся вводная информация ΠΎ языкС программирования C# ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² .NET, Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ мСТплатформСнная Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ, Π²Ρ‹Ρ‚Π΅ΠΊΠ°ΡŽΡ‰Π°Ρ ΠΈΠ· самой ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρ‹ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ .NET, ΠΈ Ρ€ΠΎΠ»ΡŒ CLI (Common Language Infrastructure – общСязыковая инфраструктура).

Π“Π»Π°Π²Π° 2. ВСхнология создания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° языкС C#

Π’ этой Π³Π»Π°Π²Π΅ прСдлагаСтся ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС процСсса компиляции ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² исходного ΠΊΠΎΠ΄Π° для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, написанных Π½Π° языкС C#, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ инструмСнты ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ. Π‘Π½Π°Ρ‡Π°Π»Π° Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ компилятор ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки (csc.exe) ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ ΠΎΡ‚Π²Π΅Ρ‚Π½Ρ‹Ρ… сообщСний C#, ПослС этого Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· мноТСства ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‰ΠΈΡ… ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ срСду Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, – это, Π² частности, TextPad, SharpDevelop. Visual C# 2005 Express ΠΈ (ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅) Visual Studio 2005. Π’ΡƒΡ‚ ΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ прСдставлСн ряд Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным Π²ΠΎΠ΄ΠΎΠΌ (Vil, NAnt. NDoe ΠΈ Ρ‚.Π΄.). ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π° всякий случай Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ любой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ .NET.

Π§Π°ΡΡ‚ΡŒ II. Π―Π·Ρ‹ΠΊ программирования C#

Π’ этой части ΠΈΡΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ основныС возмоТности языка программирования C#, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π½ΠΎΠ²Ρ‹Π΅ синтаксичСскиС конструкции, появившиСся с Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ .NET 2.0, ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Π°ΡΡ‚ΡŒ II ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ вас с элСмСнтами CTS (классы, интСрфСйсы, структуры, ΠΏΠ΅Ρ€Π΅Ρ‡Π½ΠΈ ΠΈ Π΄Π΅Π»Π΅Π³Π°Ρ‚Ρ‹) ΠΈ конструкциями ΠΎΠ±Ρ‰ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ².

Π“Π»Π°Π²Π° 3. ΠžΡΠ½ΠΎΠ²Ρ‹ языка C#

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

Π“Π»Π°Π²Π° 4. Π―Π·Ρ‹ΠΊ C# 2.0 ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄

ЦСлью Π³Π»Π°Π²Ρ‹ 4 являСтся выяснСниС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ язык C# сочСтаСтся с Π±Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌΠΈ ООП – инкапсуляциСй, наслСдованиСм ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠΎΠΌ. ПослС рассмотрСния ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов ΠΈ синтаксиса, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΡ€ΠΈ построСнии ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ классов, Π±ΡƒΠ΄Π΅Ρ‚ выяснСна Ρ€ΠΎΠ»ΡŒ XML-ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅.

Π“Π»Π°Π²Π° 5. Π¦ΠΈΠΊΠ» сущСствования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

Π’ этой Π³Π»Π°Π²Π΅ выясняСтся, ΠΊΠ°ΠΊ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… CLR с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сборщика мусора .NET ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ. Π’ этой связи Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ ΠΎ Ρ€ΠΎΠ»ΠΈ ΠΊΠΎΡ€Π½Π΅ΠΉ прилоТСния, Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ Ρ‚ΠΈΠΏΠ° System.GC. ПослС изучСния Π±Π°Π·ΠΎΠ²Ρ‹Ρ… вопросов Π² ΠΎΡΡ‚Π°Π²ΡˆΠ΅ΠΉΡΡ части Π³Π»Π°Π²Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны Ρ‚Π΅ΠΌΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… освобоТдСниС рСсурсов (Ρ‡Π΅Ρ€Π΅Π· интСрфСйс IDisposable), ΠΈ процСсс Ρ„ΠΈΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° System.Object.Finalize()).

Π“Π»Π°Π²Π° 6. Бтруктурированная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ

Π’ этой Π³Π»Π°Π²Π΅ обсуТдаСтся структурированный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ (Ρ‚.Π΅. ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуаций), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ Π² срСдС выполнСния. Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… словах языка C# (try, catch, throw ΠΈ finally), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ выяснитС Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ систСмного уровня ΠΈ уровня прилоТСния. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² Π³Π»Π°Π²Π΅ ΠΎΠ±ΡΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ срСдства Visual Studio 2005, ΠΏΡ€ΠΈΠ·Π²Π°Π½Π½Ρ‹Π΅ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ выявлСния ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, ΡƒΡΠΊΠΎΠ»ΡŒΠ·Π½ΡƒΠ²ΡˆΠΈΡ… ΠΎΡ‚ вашСго внимания.

Π“Π»Π°Π²Π° 7. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ ΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ

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

Π“Π»Π°Π²Π° 8. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°, Π΄Π΅Π»Π΅Π³Π°Ρ‚Ρ‹ ΠΈ события

ЦСль Π³Π»Π°Π²Ρ‹ 8 Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ€Π°Π·ΡŠΡΡΠ½Π΅Π½ΠΈΠΈ Ρ‚ΠΈΠΏΠ° Π΄Π΅Π»Π΅Π³Π°Ρ‚Π°. Π£ΠΏΡ€ΠΎΡ‰Π΅Π½Π½ΠΎ говоря, Π΄Π΅Π»Π΅Π³Π°Ρ‚ .NET – это шаблон, "ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ" Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π°ΠΊΠΎΠ³ΠΎ шаблона Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ систСмы, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… мноТСство ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ связаны двусторонним ΠΎΠ±ΠΌΠ΅Π½ΠΎΠΌ- ПослС выяснСния возмоТностСй использования Π΄Π΅Π»Π΅Π³Π°Ρ‚ΠΎΠ².NET (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ мноТСство возмоТностСй, ΠΏΠΎΡΠ²ΠΈΠ²ΡˆΠΈΡ…ΡΡ с вСрсиСй 2.0, – Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹) Π² Π³Π»Π°Π²Π΅ рассматриваСтся ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово C# event, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ процСсс программирования с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π΅Π»Π΅Π³Π°Ρ‚ΠΎΠ².

Π“Π»Π°Π²Π° 9. Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΡ‹ построСния Ρ‚ΠΈΠΏΠΎΠ²

Π­Ρ‚Π° Π³Π»Π°Π²Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ Π³Π»ΡƒΠ±ΠΆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ возмоТности языка программирования C# ΠΏΡƒΡ‚Π΅ΠΌ изучСния Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² программирования. Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ прСобразования (явного ΠΈΠ»ΠΈ нСявного), ΠΊΠ°ΠΊ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ индСксаторы Ρ‚ΠΈΠΏΠΎΠ² ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ c указатСлями C-Ρ‚ΠΈΠΏΠ° Π² Ρ„Π°ΠΉΠ»Π΅ *.cs.

Π“Π»Π°Π²Π° 10. ΠžΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΡ

Π’ свази с Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ .NET 2.0 язык программирования C# Π±Ρ‹Π» Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ с Ρ†Π΅Π»ΡŒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π½ΠΎΠ²ΠΎΠΉ возмоТности CTS, связанной с Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΌΠΈ обобщСниями (generics). Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠΉ ускоряСт процСсс создания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ обСспСчиваСт Ρ‚ΠΈΠΏΠΎΠ²ΡƒΡŽ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ. Π—Π΄Π΅ΡΡŒ рассмотрСны Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΈΠ· пространства ΠΈΠΌΠ΅Π½ System, Collections.Generic, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ свои собствСнныС ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Ρ‚ΠΈΠΏΡ‹ (ΠΊΠ°ΠΊ с ограничСниями, Ρ‚Π°ΠΊ ΠΈ Π±Π΅Π· Ρ‚Π°ΠΊΠΎΠ²Ρ‹Ρ…).

Π§Π°ΡΡ‚ΡŒ III. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² .NET

Π’ этой части рассматриваСтся Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² .NET. Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΈ ΡΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° .NET, ΠΈ выяснитС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ структуру Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π° .NET. Π’ этой ΠΆΠ΅ части ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ Ρ€ΠΎΠ»ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² .NET ΠΈ конструкция ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π’ послСдних Π³Π»Π°Π²Π°Ρ… этой части Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ вопросы [Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ контСкст), Π° Ρ‚Π°ΠΊΠΆΠ΅ синтаксис ΠΈ сСмантика CIL.

Π“Π»Π°Π²Π° 11. ΠšΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ .NET

Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния высокоуровнСвого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°, ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ – это Ρ„Π°ΠΉΠ»Ρ‹ *.dll ΠΈΠ»ΠΈ *.exe. Но такая интСрпрСтация ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² .NET ΠΎΡ‡Π΅Π½ΡŒ Π΄Π°Π»Π΅ΠΊΠ° ΠΎΡ‚ "ΠΈΡΡ‡Π΅Ρ€ΠΏΡ‹Π²Π°ΡŽΡ‰Π΅ΠΉ". Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΎΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ ΠΈ ΠΊΠ°ΠΊ строятся ΠΈ ΠΈΠ½ΡΡ‚Π°Π»Π»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Π’Ρ‹ Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Π΅ ΠΈ общСдоступныС ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ для этого XML-Ρ„Π°ΠΉΠ»Ρ‹ *.config ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ поставщика. По Ρ…ΠΎΠ΄Ρƒ Π΄Π΅Π»Π° Π±ΡƒΠ΄ΡƒΡ‚ выяснСны внутрСнняя структура GAC (Global Assembly Cache – Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ кэш ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ²) ΠΈ Ρ€ΠΎΠ»ΡŒ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ .NET Framework 2.0.

Π“Π»Π°Π²Π° 12. ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ², динамичСскоС связываниС ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ²

Π’ Π³Π»Π°Π²Π΅ 12 ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² .NET продолТаСтся – здСсь рассматриваСтся процСсс обнаруТСния Ρ‚ΠΈΠΏΠΎΠ² Π² срСдС выполнСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ пространства ΠΈΠΌΠ΅Π½ System.Reflection. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этих Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ прилоТСния, способныС Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² "Π½Π° Π»Π΅Ρ‚Ρƒ". Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ динамичСски Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΡ‹ Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ динамичСскоС связываниС. Π—Π΄Π΅ΡΡŒ ΠΆΠ΅ исслСдуСтся Ρ€ΠΎΠ»ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² .NET (ΠΊΠ°ΠΊ стандартных, Ρ‚Π°ΠΊ ΠΈ создаваСмых программистом). Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ возмоТности примСнСния ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π²ΡˆΠΈΡ…ΡΡ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ², Π² ΠΊΠΎΠ½Ρ†Π΅ Π³Π»Π°Π²Ρ‹ рассматриваСтся конструкция Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΠ³ΠΎ прилоТСния Windows Forms.