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

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

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

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. ОписаниС возмоТностСй слоя взаимодСйствия .NET (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Plnvoke) Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ этой ΠΊΠ½ΠΈΠ³ΠΈ. Если Π²Π°ΠΌ потрСбуСтся ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ освСщСниС этого вопроса, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ ΠΌΠΎΠ΅ΠΉ ΠΊΠ½ΠΈΠ³Π΅ COM and .NET Interoperability (Apress, 2002).

Π“Π»Π°Π²Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ .NET (CLR, CTS ΠΈ CLS)

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… прСимущСствах, обСспСчиваСмых .NET, Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Ρ‚Ρ€ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… (ΠΈ взаимосвязанных) ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ эти прСимущСства: CLR, CTS ΠΈ CLS. Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния программиста .NET ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ новая срСда выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ Π²ΡΠ΅ΠΎΠ±ΡŠΠ΅ΠΌΠ»ΡŽΡ‰Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π±Π°Π·ΠΎΠ²Ρ‹Ρ… классов. Π‘Π»ΠΎΠΉ срСды выполнСния здСсь называСтся CLR (Common Language Runtime – общСязыковая срСда выполнСния). Π“Π»Π°Π²Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ CLR ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅, Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ .NET-Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΠΏΠΎ Π²Π°ΡˆΠ΅ΠΌΡƒ ΡƒΠΊΠ°Π·Π°Π½ΠΈΡŽ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, CLR ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ряд Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… вопросов, Ρ‚Π°ΠΊΠΈΡ…, ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° бСзопасности.

Π”Ρ€ΡƒΠ³ΠΈΠΌ ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π±Π»ΠΎΠΊΠΎΠΌ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.NET являСтся CTS (Common Type System – общая систСма Ρ‚ΠΈΠΏΠΎΠ²). Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ CTS ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ конструкции, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ срСдой выполнСния, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, ΠΊΠ°ΠΊ эти элСмСнты ΠΌΠΎΠ³ΡƒΡ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… .NET (Π±ΠΎΠ»Π΅Π΅ подробная информация ΠΎ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ прСдставлСна Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ·ΠΆΠ΅).

Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ язык, совмСстимый с .NET, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ всС возмоТности, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ CTS. Π’ связи с этим ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ связанныС спСцификации CLS (Common Language Specification – общСязыковыС спСцификации), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ подмноТСство ΠΎΠ±Ρ‰ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… конструкций, понятных всСм языкам программирования, совмСстимым с .NET. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли создаваСмыС Π²Π°ΠΌΠΈ .NET-Ρ‚ΠΈΠΏΡ‹ ΠΎΠΏΠΈΡ€Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° возмоТности, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ CLS, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π±Ρ‹Π²Π°Ρ‚ΡŒ Π² увСрСнности, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… смоТСт любой совмСстимый с .NET язык. А Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ конструкции, выходящиС Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ CLS, Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ с вашСй Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ .NET-ΠΊΠΎΠ΄Π° смоТСт Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ любой язык программирования .NET.

Роль Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… классов

Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ спСцификациям CLR ΠΈ CTS/CLS, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° .NET ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… классов, Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΡƒΡŽ всСм языкам программирования .NET. Π­Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π±Π°Π·ΠΎΠ²Ρ‹Ρ… классов Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ инкапсулируСт Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΠΎΡ‚ΠΎΠΊΠΈ, Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄, визуализация Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΈ взаимодСйствиС с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ внСшними устройствами, Π½ΠΎ ΠΈ обСспСчиваСт ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Ρ†Π΅Π»ΠΎΠ³ΠΎ ряда сСрвисов, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° соврСмСнных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

НапримСр, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… классов ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Ρ‚ΠΈΠΏΡ‹, ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‰ΠΈΠ΅ доступ ΠΊ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ€Π°Π±ΠΎΡ‚Ρƒ с XML, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ бСзопасности ΠΈ созданиС Web-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΈ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ) ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. Π‘Ρ…Π΅ΠΌΠ° высокоуровнСвых взаимосвязСй ΠΌΠ΅ΠΆΠ΄Ρƒ CLR, CTS, CLS ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… классов ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½Π° рис. 1.1.

Рис. 1.1. CLR, CTS, CLS ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π±Π°Π·ΠΎΠ²Ρ‹Ρ… классов

Роль языка C#

Π‘ ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ .NET Ρ‚Π°ΠΊ Ρ€Π°Π΄ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, Microsoft Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° Π½ΠΎΠ²Ρ‹ΠΉ язык программирования, C# (произносится "си-Π΄ΠΈΠ΅Π·"), ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для использования с этой Π½ΠΎΠ²ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ. Π―Π·Ρ‹ΠΊ C# являСтся языком программирования, ΠΏΠΎ синтаксису ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌ Π½Π° Java (Π½ΠΎ Π½Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ΠΌ Π΅ΠΌΡƒ). Однако Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ C# "ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΌ" Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ Java Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅Π²Π΅Ρ€Π½ΠΎ. C#, ΠΊΠ°ΠΊ ΠΈ Java, основан Π½Π° синтаксичСских конструкциях C++. Π’Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Java, C# ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ "Ρ€Π°Ρ„ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ" вСрсиСй C++ – Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², это языки ΠΎΠ΄Π½ΠΎΠ³ΠΎ сСмСйства.

МногиС синтаксичСскиС конструкции C# построСны с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, принятых Π² Visual Basic 6.0 ΠΈ C++. НапримСр, ΠΊΠ°ΠΊ ΠΈ Π² VB6, Π² C# ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ свойства Ρ‚ΠΈΠΏΠΎΠ² (Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ get ΠΈ set) ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ объявлСния ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ числом Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² (Ρ‡Π΅Ρ€Π΅Π· массивы ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²). Подобно C++, Π² C# позволяСтся ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Π° Ρ‚Π°ΠΊΠΆΠ΅ созданиС структур, ΠΏΠ΅Ρ€Π΅Ρ‡Π½Π΅ΠΉ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° (посрСдством Π΄Π΅Π»Π΅Π³Π°Ρ‚ΠΎΠ²).

Благодаря Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ C# являСтся Π³ΠΈΠ±Ρ€ΠΈΠ΄ΠΎΠΌ мноТСства языков, ΠΎΠ½ являСтся ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ синтаксичСски Ρ‚Π°ΠΊ ΠΆΠ΅ "чист", ΠΊΠ°ΠΊ Java (Ссли Π½Π΅ "Ρ‡ΠΈΡ‰Π΅"), ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ‚Π°ΠΊ ΠΆΠ΅ прост, ΠΊΠ°ΠΊ VB6, ΠΈ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΌΠΎΡ‰ΡŒΡŽ ΠΈ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒΡŽ, ΠΊΠ°ΠΊ C++ (Π±Π΅Π· ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… "уТасных" конструкций). По сути, язык C# ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ возмоТности (ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… присущи ΠΈ всСм Π΄Ρ€ΡƒΠ³ΠΈΠΌ языкам программирования, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ .NET).

β€’ НС трСбуСтся Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ! ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° C# ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ прямого обращСния ΠΊ указатСлям (хотя имССтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊ Π½ΠΈΠΌ доступ Π½Π° Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, Ссли Π²Ρ‹ сочтСтС это Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ).

β€’ АвтоматичСскоС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ Ρ‡Π΅Ρ€Π΅Π· сборку мусора. По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Π² C# Π½Π΅ поддСрТиваСтся ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово delete.

β€’ Π€ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ синтаксичСскиС конструкции для ΠΏΠ΅Ρ€Π΅Ρ‡Π½Π΅ΠΉ, структур ΠΈ свойств классов.

β€’ Аналогичная C++ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ², Π½ΠΎ Π±Π΅Π· Π»ΠΈΡˆΠ½ΠΈΡ… слоТностСй (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Π°ΠΌ Π½Π΅ трСбуСтся ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ "Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ *this для связывания").

β€’ Π’ C# 2005 имССтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ ΠΈ ΠΎΠ±Ρ‰ΠΈΠ΅ Ρ‡Π»Π΅Π½Ρ‹ с использованиСм синтаксиса, ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ΅Π³ΠΎ Π½Π° ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ C++.

β€’ Полная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ программирования, основанной Π½Π° использовании интСрфСйсов.

β€’ Полная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ аспСктно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования (АОП) Ρ‡Π΅Ρ€Π΅Π· Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹. Π­Ρ‚Π° Π²Π΅Ρ‚Π²ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ позволяСт Π½Π°Π·Π½Π°Ρ‡Π°Ρ‚ΡŒ характСристики Ρ‚ΠΈΠΏΠ°ΠΌ ΠΈ ΠΈΡ… Ρ‡Π»Π΅Π½Π°ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡ‚ΠΎΡ‡Π½ΡΡ‚ΡŒ ΠΈΡ… ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, самым Π²Π°ΠΆΠ½Ρ‹ΠΌ для ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ понимания языка C#, поставляСмого Microsoft Π² связкС с ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ .NET, являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ C# ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² срСдС выполнСния .NET (Π²Ρ‹ Π½Π΅ смоТСтС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ C# для построСния "классичСского" COM-сСрвСра ΠΈΠ»ΠΈ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΠΎΠ³ΠΎ прилоТСния Win32 API). ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для описания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ для срСды выполнСния .NET, – управляСмый ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ (managed code). Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, содСрТащий Ρ‚Π°ΠΊΠΎΠΉ управляСмый ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄, называСтся ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΌ Π±Π»ΠΎΠΊΠΎΠΌ (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠ°Ρ… ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ·ΠΆΠ΅). Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ нСпосрСдствСнно ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ срСдой выполнСния .NET, называСтся нСуправляСмым ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ (unmanaged code).

Π”Ρ€ΡƒΠ³ΠΈΠ΅ языки программирования с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ .NET

Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ C# являСтся Π½Π΅ СдинствСнным языком, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ .NET. Когда ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° .NET Π±Ρ‹Π»Π° Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ прСдставлСна общСствСнности Π½Π° ΠŸΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Microsoft Π² 2000 Π³ΠΎΠ΄Ρƒ, ряд ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ объявили, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΡƒΠΆΠ΅ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ вСрсии ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… компиляторов, совмСстимыС с .NET. На ΠΌΠΎΠΌΠ΅Π½Ρ‚ создания этой ΠΊΠ½ΠΈΠ³ΠΈ дСсятки Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… языков ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π»ΠΈΡΡŒ влиянию .NET. Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ пяти языкам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ΡΡ Π² Visual Studio 2005 (C#, J#, Visual Basic .NET, Managed Extensions для C++ ΠΈ JScript .NET), ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅ .NET-компиляторы для Smalltalk, COBOL ΠΈ Pascal (это Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ).

ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» этой ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ посвящСн языку C#, Π½ΠΎ Π² Ρ‚Π°Π±Π». 1.1 приводится список Π΄Ρ€ΡƒΠ³ΠΈΡ… языков программирования, совмСстимых с .NET, ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΎ, Π³Π΄Π΅ Π½Π°ΠΉΡ‚ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π½ΠΈΡ… (ΡƒΡ‡Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ адрСса URL ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ).

Π’Π°Π±Π»ΠΈΡ†Π° 1.1. НСкоторыС ΠΈΠ· языков программирования, совмСстимых с .NET

АдрСс Web-страницы языка .NET ОписаниС http://www.oberon.ethz.ch/oberon.NET "Π”ΠΎΠΌΠ°ΡˆΠ½ΡΡ" страница Active Oberon .NET http://www.usafa.af.mil/df/dfcs/bios/mcc_html/a_sharp.cfm " Π”ΠΎΠΌΠ°ΡˆΠ½ΡΡ" страница А# (ΠΏΠΎΡ€Ρ‚ Ada для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ .NET) http://www.netcobol.com Для Ρ‚Π΅Ρ…, ΠΊΠΎΠ³ΠΎ интСрСсуСт COBOL .NET http://www.eiffel.com Для Ρ‚Π΅Ρ…, ΠΊΠΎΠ³ΠΎ интСрСсуСт Eiffel .NET http://www.dataman.ro/dforth Для Ρ‚Π΅Ρ…, ΠΊΠΎΠ³ΠΎ интСрСсуСт Forth .NET http://www.silverfrost.com/ll/ftn95/ftn95_fortran_95_for_windows.asp Для Ρ‚Π΅Ρ…, ΠΊΠΎΠ³ΠΎ интСрСсуСт Fortran .NET http://www.vmx-net.com ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, доступСн Π΄Π°ΠΆΠ΅ Smalltalk .NET

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΡƒΡ‡Π΅ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ информация Ρ‚Π°Π±Π». 1.1 Π½Π΅ являСтся ΠΈΡΡ‡Π΅Ρ€ΠΏΡ‹Π²Π°ΡŽΡ‰Π΅ΠΉ. Бписки компиляторов для .NET ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΡ… Web-ΡƒΠ·Π»Π°Ρ…, ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… списков Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π½Π° страницС http://www.dotnetpowered.com/languages.aspx (ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅, Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ адрСс URL ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ). Π― Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΏΠΎΡΠ΅Ρ‚ΠΈΡ‚ΡŒ эту страницу, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ вас Π½Π΅ΠΏΡ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π·Π°ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‚ хотя Π±Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· языков .NET (ΠΌΠΎΠΆΠ΅Ρ‚, ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ понадобится LISP .NET).