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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«C# для профСссионалов. Π’ΠΎΠΌ IIΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 148

Автор Π‘ΠΈΠΌΠΎΠ½ Робинсон

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

Основная Ρ‡Π°ΡΡ‚ΡŒ этого прилоТСния посвящСна Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π΄Π²ΡƒΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ вСрсии Π½Π° VB ΠΈ C#. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ являСтся простой Ρ„ΠΎΡ€ΠΌΠΎΠΉ, Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ число ΠΈ выводящСй ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΡ€Π΅Π½ΡŒ ΠΈ Π·Π½Π°ΠΊ числа. Бравнивая ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ вСрсии ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π° VB ΠΈ C#, ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ синтаксис C# ΠΈ ΠΏΠΎΠΉΠΌΠ΅ΠΌ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π»Π΅ΠΆΠ°Ρ‚ Π² основС ΠΏΠΎΡ‚ΠΎΠΊΠ° выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

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

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½ΠΎ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΌ ΠΎΠ±Π·ΠΎΡ€ΠΎΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ· ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ VB ΠΈ C#, Π½Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ….

Однако ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ нСсколько ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ, ΠΊΠ°ΡΠ°ΡŽΡ‰ΠΈΡ…ΡΡ классов, компиляции ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… классов .NET.

ΠšΠ»Π°ΡΡΡ‹ 

Π’ этом ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π±ΡƒΠ΄ΡƒΡ‚ достаточно интСнсивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ классы C#. Они ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² Π³Π»Π°Π²Π°Ρ… 4 ΠΈ 5. Но для логичности излоТСния Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΈΡ… ΠΊΠ°ΠΊ эквивалСнты C# ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ классов VB, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ достаточно ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌΠΈ сущностями. Подобно ΠΌΠΎΠ΄ΡƒΠ»ΡŽ класса VB, класс C# Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ содСрТит ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‡Π»Π΅Π½Ρ‹. Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ для модуля класса VB, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса C# (экзСмпляры класса) с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° new. Π—Π° этим сходством, ΠΎΠ΄Π½Π°ΠΊΠΎ, скрываСтся ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΈ. НапримСр, ΠΌΠΎΠ΄ΡƒΠ»ΡŒ класса VB являСтся Π½Π° самом Π΄Π΅Π»Π΅ классом COM. ΠšΠ»Π°ΡΡΡ‹ C#, Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ², ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ классами COM, Π½ΠΎ ΠΎΠ½ΠΈ всСгда ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π² срСду .NET. ΠšΠ»Π°ΡΡΡ‹ C# ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½Ρ‹ΠΌΠΈ Ρ‡Π΅ΠΌ ΠΈΡ… Π°Π½Π°Π»ΠΎΠ³ΠΈ VB/COM, Π² Ρ‚ΠΎΠΌ смыслС, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π΄Π°ΡŽΡ‚ ΠΌΠ΅Π½ΡŒΡˆΡƒΡŽ ΠΏΠΎΡ‚Π΅Ρ€ΡŽ быстродСйствия ΠΏΡ€ΠΈ создании экзСмпляра. Но эти различия ΠΌΡ‹ ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ обсуТдСнии языка C#.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ

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

Π’ C# компиляция дСлаСтся Π² Π΄Π²Π° этапа, Π³Π΄Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ этап выполняСтся Π½Π° Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΌ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠΌ языкС (IL) Π­Ρ‚ΠΎΡ‚ этап Π±ΡƒΠ΄Π΅ΠΌ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ собствСнно компиляциСй. Π’Ρ‚ΠΎΡ€ΠΎΠΉ этап β€” ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² исполнимый ΠΊΠΎΠ΄, происходящСС Π²ΠΎ врСмя выполнСния, являСтся Π±ΠΎΠ»Π΅Π΅ простым этапом, поэтому ΠΎΠ½ Π½Π΅ Π²Π΅Π΄Π΅Ρ‚ ΠΊ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ потСрям ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Он Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ являСтся ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ. Π‘Ρ€Π°Π·Ρƒ Ρ†Π΅Π»Ρ‹Π΅ части ΠΊΠΎΠ΄Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ ΠΈΠ· IL Π² язык ассСмблСра, ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ исполнимый ΠΊΠΎΠ΄ Π½Π° собствСнном языкС ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π·Π°Ρ‚Π΅ΠΌ сохраняСтся, поэтому Π½Π΅ трСбуСтся Π΅Π³ΠΎ пСрСкомпиляции Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ эта Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°. Компания Microsoft считаСт, Ρ‡Ρ‚ΠΎ Π² ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ оптимизациями это, Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ счСтС Π²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΊΠΎΠ΄Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ выполнится быстрСС, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈ использовании ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ систСмы прямой компиляции ΠΈΠ· исходного ΠΊΠΎΠ΄Π° Π² собствСнный исполнимый ΠΊΠΎΠ΄. Π₯отя ΠΎ сущСствовании IL Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, ΠΎΠ½ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° обсуТдСниС Π² этом ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ Π½Π΅ влияСт Π½Π° синтаксис языка C#.

Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ классы .NET

VB Π½Π΅ состоит просто ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ языка. БущСствуСт большоС число связанных с Π½ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, скаТСм, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прСобразования CInt, CStr ΠΈ Ρ‚.Π΄., Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄Π°Ρ‚Ρ‹-Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. VB Ρ‚Π°ΠΊΠΆΠ΅ полагаСтся Π½Π° присутствиС элСмСнтов управлСния ActiveX, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… стандартныС элСмСнты управлСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅,β€” поля списков, ΠΊΠ½ΠΎΠΏΠΊΠΈ, тСкстовыС поля ΠΈ Ρ‚.Π΄.

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

Одним ΠΈΠ· Π²Π°ΠΆΠ½Ρ‹Ρ… Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ VB6 ΠΈ C# Π² этом ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ систСма Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ VB являСтся спСцифичСской для VB, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ класс .NΠ•Π’ доступны для любого ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ .NET языка программирования.

БоглашСния

Π’ этом ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΊΠΎΠ΄ Π½Π° C# часто сравниваСтся с Visual Basic. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π° Π½Π° Π΄Π²ΡƒΡ… языках программирования, ΠΊΠΎΠ΄ C# прСдставлСн Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΈ Π² прилоТСниях Π’ ΠΈ C:

// Код ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΆΠ΅ Π±Ρ‹Π» ΠΏΠΎΠΊΠ°Π·Π°Π½

// Код C#, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ

// являСтся Π½ΠΎΠ²Ρ‹ΠΌ

Однако вСсь ΠΊΠΎΠ΄ VB даСтся Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅:

' Код VB прСдставлСн Π½Π° Π±Π΅Π»ΠΎΠΌ Ρ„ΠΎΠ½Π΅

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Π€ΠΎΡ€ΠΌΠ° для извлСчСния ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ корня

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ рассмотрим простоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ SquareRoot, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ Π½Π° Visual Basic ΠΈ Π½Π° C#. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ являСтся ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹ΠΌ ΠΎΠΊΠ½ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ввСсти число ΠΈ Π·Π°Ρ‚Π΅ΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΡƒ, Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π·Π½Π°ΠΊ ΠΈ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΡ€Π΅Π½ΡŒ этого числа. Если число ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅, Ρ‚ΠΎ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΡ€Π΅Π½ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ вывСсти ΠΊΠ°ΠΊ комплСксноС число, Ρ‡Ρ‚ΠΎ просто ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ корня ΠΈΠ· ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ числа ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ послС Π½Π΅Π³ΠΎ 'i'. ВСрсия C# ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. ВСрсия VB ΠΏΠΎ Π²ΠΈΠ΄Ρƒ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Π°, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΡŽ ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ VB вмСсто ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΠΊΠΎΠ½Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌ .NET Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ Π»Π΅Π²ΠΎΠΌ ΡƒΠ³Π»Ρƒ:

ВСрсия SquareRoot Π½Π° VB

Π§Ρ‚ΠΎΠ±Ρ‹ это ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ Π² Visual Basic, Π½Π°Π΄ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ событий для события наТатия ΠΊΠ½ΠΎΠΏΠΊΠΈ. Для ΠΊΠ½ΠΎΠΏΠΊΠΈ задаСтся имя cmdShowResults, Π° тСкстовыС поля ΠΈΠΌΠ΅ΡŽΡ‚ ΠΈΠΌΠ΅Π½Π° txtNumber, txtSign ΠΈ txtResult. Π‘ этими ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ событий выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Option Explicit

Private Sub cmdShowResults_Click()

 Dim NumberInput As Single

 NumberInput = CSng(Me.txtNumber.Text)

 If (NumberInput < 0) Then

  Me.txtSign.Text = "Negative"

  Me.txtResult.Text = CStr(Sqr(-NumberInput)) & " i"

 ElseIf (NumberInput = 0) Then

  txtSign.Text = "Zero"

  txtResult.Text = "0"

 Else

  Me.txtSign.Text = "Positive"

  Me.txtResult.Text = CStr(Sqr(NumberInput))

 End If

End Sub

Π­Ρ‚ΠΎ СдинствСнный Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° VB, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ.

ВСрсия SquareRoot Π½Π° C#

На C# Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ событий для события наТатия ΠΊΠ½ΠΎΠΏΠΊΠΈ. Π—Π΄Π΅ΡΡŒ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Ρ‚Π΅ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ тСкстовых ΠΏΠΎΠ»Π΅ΠΉ, Π½ΠΎ Π½Π° C# ΠΊΠΎΠ΄ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

// ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ событий наТатия ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΠΈ Show Results.

// выводится ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΡ€Π΅Π½ΡŒ ΠΈ Π·Π½Π°ΠΊ числа

private void OnClickShowResults(object sender, System.EventArgs e) {

 float NumberInput = float.Parse(this.txtNumber.Text);

 if (NumberInput < 0) {

this.txtSign.Text = "Negative";

  this.txtResult.Text = Math.Sqrt(-NumberInput).ToString() + " i";

 } else if (NumberInput == 0) {

  txtSign.Text = "Zero";

  txtResult.Text = "0";

 } else {

  this.txtSign.Text = "Positive";

  this.txtResult.Text = Math.Sqrt(NumberInput).ToString();

 }