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

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

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

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

НСобходимо ΡΠΊΠ°Π·Π°Ρ‚ΡŒ нСсколько слов ΠΎΠ± ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ… Π² C#, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ нСсколько ΠΈΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ VB, ΠΈ это ΠΌΠΎΠΆΠ΅Ρ‚ внСсти ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρƒ, Ссли программист ΠΏΡ€ΠΈΠ²Ρ‹ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с VB. Π’ VB сущСствуСт Π½Π° самом Π΄Π΅Π»Π΅ Π΄Π²Π° Ρ‚ΠΈΠΏΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²:

β–‘ ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ присваивания =, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ присваиваСт значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ.

β–‘ Π’сС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹: +, -, * ΠΈ /, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π—Π΄Π΅ΡΡŒ сущСствуСт Π²Π°ΠΆΠ½ΠΎΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΊΡ€ΠΎΠΌΠ΅ =, Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ эффСкта Π² смыслС измСнСния ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ значСния. Π‘ΠΎ своСй стороны, = присваиваСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚. НС сущСствуСт ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈ Ρ‚ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

Π’ C# Ρ‚Π°ΠΊΠΎΠ³ΠΎ раздСлСния просто Π½Π΅ сущСствуСт. ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ Π² C# гласит, Ρ‡Ρ‚ΠΎ всС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹ΠΉ эффСкт, присваивая Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ЀактичСски ΠΌΡ‹ ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ этого, ΠΊΠΎΠ³Π΄Π° рассматривали ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ слоТСния-присваивания +=:

int А = 5, Π’ = 15;

А += Π’; // выполняСт Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ

        // ΠΈ присваиваСт А Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ (20)

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, += Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚, Π° Ρ‚Π°ΠΊΠΆΠ΅ присваиваСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Он Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±Ρ‹Π»ΠΎ присвоСно. Π’ связи с этим ΠΌΠΎΠΆΠ½ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ:

int А = 5, B = 15;

int C = (А+=Π’);

Π­Ρ‚ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ Π² Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΈ А, ΠΈ Π‘ Π±ΡƒΠ΄Π΅Ρ‚ присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 20. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ присваивания = Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±Ρ‹Π»ΠΎ присвоСно ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ с Π»Π΅Π²ΠΎΠΉ стороны выраТСния. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π‘ = (А = Π’);

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π·Π°Π΄Π°Π΅Ρ‚ А Ρ€Π°Π²Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π’, Π° Π·Π°Ρ‚Π΅ΠΌ Ρ‚ΠΎ ΠΆΠ΅ самоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ присваиваСт Π‘. МоТно Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ эту ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ Π±ΠΎΠ»Π΅Π΅ просто:

Π‘ = А = Π’;

ΠžΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ использованиС Ρ‚Π°ΠΊΠΎΠ³ΠΎ синтаксиса состоит Π² вычислСнии Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ условия Π²Π½ΡƒΡ‚Ρ€ΠΈ инструкции if ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΌ Π·Π°Π΄Π°Π½ΠΈΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° этого условия Π² Π²ΠΈΠ΄Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° bool (эквивалСнт Π² C# для Boolean ΠΈΠ· VB), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΆΠ΅:

// ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ X ΠΈ Y β€” ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹.

bool Π’;

if (Π’ = (X==Y)) DoSomething();

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ выглядит ΠΏΡƒΠ³Π°ΡŽΡ‰ΠΈΠΌ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд, Π½ΠΎ ΠΎΠ½ Π²ΠΏΠΎΠ»Π½Π΅ Π»ΠΎΠ³ΠΈΡ‡Π΅Π½. Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Π΅Π³ΠΎ. ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ провСряСт условиС X == Y. Π’ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, содСрТат Π»ΠΈ X ΠΈ Y ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΎΠ½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ true ΠΈΠ»ΠΈ false ΠΈ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ присвоСно ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π’. Однако ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ присваивания Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±Ρ‹Π»ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ присвоСно всС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π’ = (X==Y) Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ самоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (true ΠΈΠ»ΠΈ false). Π­Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ if для опрСдСлСния, Π½ΡƒΠΆΠ½ΠΎ Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΡƒΡΠ»ΠΎΠ²Π½ΡƒΡŽ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ DoSometning(). Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ этого ΠΊΠΎΠ΄Π° условиС X == Y провСряСтся для выяснСния, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ условныС инструкции, ΠΈ Π² Ρ‚ΠΎ ΠΆΠ΅ самоС врСмя Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ этой ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π’.

Π’Π΅Ρ€Π½Π°Ρ€Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

Π’ этом ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π½Π΅Ρ‚ мСста для обсуТдСния всСх доступных Π² C# ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ². Они ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассмотрСны Π² Π³Π»Π°Π²Π°Ρ… 3-6. Однако упомянСм Ρ‚Π΅Ρ€Π½Π°Ρ€Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ (извСстный Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ условный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€), Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ синтаксис. Π’Π΅Ρ€Π½Π°Ρ€Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ формируСтся ΠΈΠ· Π΄Π²ΡƒΡ… символов β€” ? ΠΈ :. Он ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Ρ€ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΈ Π½Π° самом Π΄Π΅Π»Π΅ эквивалСнтСн инструкции If Π² VB. БинтаксичСски ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

// Π’, X ΠΈ Y ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ выраТСниями.

// Π’ являСтся Boolean.

B ? X : Y

ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ: оцСниваСтся ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ располоТСно ΠΏΠ΅Ρ€Π΅Π΄ символом ?, Ссли ΠΎΠ½ΠΎ оцСниваСтся ΠΊΠ°ΠΊ true, Ρ‚ΠΎ возвращаСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½ΠΎ Ссли ΠΎΠ½ΠΎ оцСниваСтся ΠΊΠ°ΠΊ false, Ρ‚ΠΎ вмСсто этого возвращаСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ выраТСния. Π­Ρ‚ΠΎ прСдоставляСт ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ синтаксис для условного задания значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ:

int Z = (Π₯==Y) ? 5 : 8;

Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΊΠ°ΠΊ ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ вычислСния:

int Z;

if (X==Y) Z = 5;

else Z = 8;

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

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

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΎΡ‚ VΠ’ ΠΊ C# Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ, Π½ΠΎ стоит Ρ‚ΠΎΠ³ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ мСтодология C# позволяСт Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² VB Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ мноТСство Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΈΠ»ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π² VB Ρ…ΠΎΡ€ΠΎΡˆΠΎ структурированными ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΌΠΈ. ΠŸΡ€ΠΈ использовании C# ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ бонус срСды выполнСния .NET ΠΈ всСх связанных с этим прСимущСств. 

ΠŸΡ€ΠΈΠ»ΠΎΠΆeΠ½ΠΈe D

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ компиляции C#

Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ пСрСчисляСт Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ компиляции C#, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ, Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ C#, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ возмоТности Visual Studio.NET, ΠΈΠ»ΠΈ Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ компилятора, Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Visual Studio.NET. Они ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†, составлСнных согласно катСгориям.

ΠŸΠ΅Ρ€Π²Π°Ρ Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ компилятор:

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ НазначСниС /doc:<имя Ρ„Π°ΠΉΠ»Π°> ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ XML (ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Π΅ трСмя слэшами β€” ///) ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π² ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» XML. /nooutput ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄, Π½ΠΎ Π½Π΅ создаСт Ρ„Π°ΠΉΠ»Π° Π²Ρ‹Π²ΠΎΠ΄Π°; ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ консоль Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ прСдупрСТдСния ΠΈ ошибки. /out:<имя Ρ„Π°ΠΉΠ»Π°> ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ имя Ρ„Π°ΠΉΠ»Π° Π²Ρ‹Π²ΠΎΠ΄Π°. Если ΠΎΠ½ΠΎ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ, Ρ‚ΠΎ компилятор создаСт стандартный Ρ„Π°ΠΉΠ» .exe с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ Ρƒ исходного Ρ„Π°ΠΉΠ»Π° (ΠΊΡ€ΠΎΠΌΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ). /target:<option> /t:<option> ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»Π° Π²Ρ‹Π²ΠΎΠ΄Π° Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ²: exe: создаСт стандартный исполняСмый Ρ„Π°ΠΉΠ» (Π·Π°Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ). library: создаСт ΠΊΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ (DLL). module: создаСт ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΊΠΎΠ΄Π° (сборку Π±Π΅Π· манифСста), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ·ΠΆΠ΅ добавляСтся ΠΊ сборкС (с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ /addmodule). winexe: создаСт исполняСмый Ρ„Π°ΠΉΠ» для Windows.

Если Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ /target:module, компилятор Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ манифСст Π² создаваСмый Π•Π₯Π• Ρ„Π°ΠΉΠ» (ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» DLL, Ссли Π•Π₯Π• Π½Π΅ создаСтся). ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ /target ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ Π΄ΠΎ /t.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки для опрСдСлСния ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ компилятора.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ НазначСниС /optimize<+ | -> /ΠΎ<+ | -> Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΈΠ»ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡƒΡŽ компилятором для создания Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ³ΠΎ, быстрого ΠΈ эффСктивного Π²Ρ‹Π²ΠΎΠ΄Π°. ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π§Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ, примСняйтС синтаксис: /optimize ΠΈΠ»ΠΈ /optimize+ Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ, примСняйтС синтаксис: /optimize-

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Ρ‚Π°Π±Π»ΠΈΡ†Π° описываСт ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° ΡΠΎΠ·Π΄Π°ΡŽΡ‚ ΠΈ ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ Π½Π° сборки .NET.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ НазначСниС /addmodule:<ΠΌΠΎΠ΄ΡƒΠ»ΡŒ> ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ сборку. Если ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ, Ρ‚ΠΎ ΠΎΠ½ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚ΠΎΡ‡ΠΊΠΈ с запятой. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ нСдоступСн Π² Visual Studio.NET /nostdlib<+ | -> ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚, Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ»ΠΈ Π½Π΅Ρ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ (mscorlib.dll), которая импортируСтся ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Если ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ своС собствСнноС пространство ΠΈΠΌΠ΅Π½ ΠΈ классы System, Ρ‚ΠΎ компилятор Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ. Бинтаксис для этого выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: /nostdlib ΠΈΠ»ΠΈ /nostdlib+ Бинтаксис для импортирования ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ: /nostdlib- /reference:<сборка> /r:<сборка> Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° сборки. МоТно ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ доступа ΠΊ сборкС, ΠΈΠ»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π²Π΅Π·Π΄Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ окруТСния PATH, Π»ΠΈΠ±ΠΎ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΉΡΡ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅. Если имССтся большС ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, ΠΎΠ½ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ посрСдством Ρ‚ΠΎΡ‡ΠΊΠΈ с запятой.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅ ошибок.