ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Π Π°ΡΡˆΠΈΡ€ΡΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ дСконструкторы

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π’ ΡΠΏΠΈΡΠΊΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Ρ‚ΠΈΠΏΡ‹ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ спСцификации Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… (с ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ out) ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² дСконструктора. Как ΠΈ ΠΏΡ€ΠΈ нСпосрСдствСнном ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Π΄Π΅ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρƒ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΈΠ³Ρ€Π°ΡŽΡ‰ΠΈΠ΅ Ρ€ΠΎΠ»ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ «Π½Π° Π»Π΅Ρ‚Ρƒ», Ρ‚. Π΅. Π² ΡΠΏΠΈΡΠΊΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Однако (Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΡΠΏΠΈΡΠΊΠ° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² прямого Π²Ρ‹Π·ΠΎΠ²Π°… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π Π°ΡΡˆΠΈΡ€ΡΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ дСконструкторы (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π Π°ΡΡˆΠΈΡ€ΡΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ позволяСт Π΄ΠΎΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ класс (ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΈΠΏ: структуру, интСрфСйс) ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ класса. Π­Ρ‚ΠΎ особСнно ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Π° Π½Π΅Ρ‚ доступа ΠΊ ΠΊΠΎΠ΄Ρƒ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ класса. НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΅Ρ‰Π΅ Π½Π΅ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π»ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ синтаксис объявлСния классов, Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΡ‹ ΡƒΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… являСтся просто ΠΏΠΎ-особому Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ статичСского класса. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚Π΅ΠΉ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ Π΄Π²Π΅. ΠŸΠ΅Ρ€Π²Π°Ρ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‰Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΈΠΏ Ρ‚ΠΎΠ³ΠΎ класса, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ выполняСтся Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅. Вторая ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ — ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ снабТСн ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ this.

Для ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ возмоТностСй Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‰ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ случайныС Ρ†Π΅Π»Ρ‹Π΅ числа с Ρ‡Π΅Ρ‚Π½Ρ‹ΠΌΠΈ значСниями, Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‰ΠΈΠ΅ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹. БрСдства для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ случайных чисСл ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½ΠΎΠΌ классС System.Random. Для получСния Ρ†Π΅Π»Ρ‹Ρ… чисСл ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° [0; ΠœΠ°Ρ…) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ нСстатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ с Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ:

int Next (int Max).

ΠœΠ΅Ρ‚ΠΎΠ΄Π° для получСния Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… случайных чисСл Π² ΠΊΠ»Π°ΡΡΠ΅ Random Π½Π΅Ρ‚. Для дополнСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² класса Random ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Ρ‚Π°ΠΊΠΎΠΉ класс: public static class RandomExpansion.

{

public static int EvenNumber (this Random rd, int max).

{

if (max < 2) return 0;

while (true).

{

int res = rd. Next (max); if (res % 2 == 0) return res;

} }

} // cLass RandomExpansion

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Π² Π΅Π³ΠΎ Ρ‚Π΅Π»ΠΎ ссылку rd Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Random. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этой ссылки выполняСтся ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ Next ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса Random ΠΈ Ρ„ормируСтся случайноС Ρ†Π΅Π»ΠΎΠ΅ число. Если ΠΎΠ½ΠΎ Ρ‡Π΅Ρ‚Π½ΠΎΠ΅, Ρ‚ΠΎ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ — Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° EvenNumber ().

К Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‰Π΅ΠΌΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ EvenNumberO ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ это ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² класса Random:

class Program.

{

static void Main ().

{

Random rnd = new Random ();

for (int k = 0; k < 10; k++).

Console.Write (rnd.EvenNumber (12) + ««);

} }

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΊΠΎΠ΄Π°:

2 10 8 10 464 628.

Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Main () создан ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Random, ссылка Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ EvenNumberO с Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½Π½Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ.

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄ EvenNumberO дСкларируСтся ΠΊΠ°ΠΊ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ класса RandomExpansion, Ρ‚ΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄. НапримСр, Ρ‚Π°ΠΊ:

int stat = RandomExpansion. EvenNumber (new Random (), 20);

Π’ Ρ‚Π°ΠΊΠΎΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‰Π΅ΠΌΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ трСбуСтся явно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚.

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Ρ‡Π»Π΅Π½Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… (ΠΊ ΠΏΠΎΠ»ΡΠΌ ΠΈ ΡΠ²ΠΎΠΉΡΡ‚Π²Π°ΠΌ) экзСмпляра класса — ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ дСконструктора.

ДСконструктор — это ΠΌΠ΅Ρ‚ΠΎΠ΄ класса со ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Deconstructor (), ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π΄Π²ΡƒΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² с ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ out. НазначСниС дСконструктора — «ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅» Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, дСконструктор выполняСт Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ смыслС ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΡƒΡŽ Ρ‚ΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ выполняСт конструктор экзСмпляров класса.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° дСконструктора ΠΌΠΎΠΆΠ½ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ поля ΠΈΠ»ΠΈ свойства, Π½ΠΎ ΠΈ Π΄ΠΎΡΡ‚Π°Ρ‚ΠΎΡ‡Π½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, вычисляСмоС Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. По ΡΡƒΡ‰Π΅ΡΡ‚Π²Ρƒ, дСконструктор — это ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ нСстатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ экзСмпляров Ρ‚ΠΈΠΏΠ°, Π½ΠΎ Π΄Π»Ρ Π΅Π³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° Π²Π²Π΅Π΄Π΅Π½ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ синтаксис. ИмСнно этот синтаксис Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρƒ Π΄Π΅ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Π° Π±Ρ‹Π»ΠΎ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π΄Π²ΡƒΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² с ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ out. Если ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π΄Π΅ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΡ‚ΠΎΡ‡Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ, ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ссылкой Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π² ΠΊΠ»Π°ΡΡΠ΅ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ дСконструктор с ΠΎΠ΄Π½ΠΈΠΌ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ.

Для ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ особСнностСй Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ дСконструкторов ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ объявлСниС класса ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠ². Π˜Π·Π²Π΅ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€ Π  ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ n-ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°, описанного ΠΎΠΊΠΎΠ»ΠΎ окруТности радиуса Π³, Ρ€Π°Π²Π΅Π½ 2*n*r*tg (PI/n), ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ этого ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° S Ρ€Π°Π²Π½Π° n*r*r*tg (PI/n). Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ эти свСдСния, Ρ‚Π°ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ класс ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠ²:

public class Polygon.

{ // Класс ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠ²

int Numb { get; set; } // Число сторон

double Radius { get; set; } // Радиус вписанной окруТности

public Polygon (int n = 3, double r = 1).

{ // конструктор Numb = n;

Radius = r;

}

public double Perimeter { // ΠŸΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€ ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° get.

{ // аксСссор свойства

double term = Math. Tan (Math.PI / Numb); return 2 * Numb * Radius * term;

} }

// ΠŸΠ»ΠΎΡ‰Π°Π΄ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°:

public double Area => Perimeter * Radius / 2;

// ДСконструктор с Π΄Π²ΡƒΠΌΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ:

public void Deconstruct (out int n, out double r).

{ r = Radius; n = Numb; }.

// ДСконструктор с Ρ‚рСмя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ:

public void Deconstruct (out int n, out double r,.

out double ambit).

{ r = Radius; n = Numb; ambit = Perimeter; }.

}

Π’ ΠΊΠ»Π°ΡΡΠ΅ Polygon Π΄Π²Π° Π°Π²Ρ‚ΠΎΡ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹Ρ… свойства (Numb ΠΈ Radius) Π·Π°Π΄Π°ΡŽΡ‚, соотвСтствСнно, число сторон ΠΈ Ρ€Π°Π΄ΠΈΡƒΡ вписанной Π² ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ окруТности. Бвойства, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€ ΠΈ ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° (Perimeter ΠΈ Area), доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π² Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ свойства Area ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ синтаксис сТатия Π΄ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡ.

Π’ ΠΊΠ»Π°ΡΡΠ΅ Polygon конструктор ΠΎΠ±Ρ‰Π΅Π³ΠΎ Π²ΠΈΠ΄Π° с ΡƒΠΌΠ°Π»Ρ‡ΠΈΠ²Π°Π΅ΠΌΡ‹ΠΌΠΈ значСниями ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ Π΄Π²Π° дСконструктора. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… — с Π΄Π²ΡƒΠΌΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ:

public void Deconstruct (out int n, out double r).

{r = Radius; n = Numb;}.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ этого дСконструктора Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ значСния Π°Π²Ρ‚ΠΎΡ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹Ρ… свойств ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса.

Бписок ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ дСконструктора Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ (out double ambit), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства, Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‰Π΅Π³ΠΎ ΠΏΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€ ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°, прСдставлСнного ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ класса.

Бинтаксис языка C# допускаСт нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Ρ‹Π·ΠΎΠ²Π° дСконструктора. Π’Π°ΠΊ ΠΊΠ°ΠΊ дСконструктор опрСдСляСтся ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ нСстатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ класса, Ρ‚ΠΎ ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π½Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ нСпосрСдствСнно, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ссылку Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса:

Polygon poly = new PolygonQ;

poly.Deconstruct (out int n, out double r);

Console.WriteLine («Numb = «+ n + «; Radius = «+ r);

ΠŸΡ€ΠΈ создании ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, адрСсуСмого ссылкой Polygon poly, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡƒΠΌΠ°Π»Ρ‡ΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² конструктора. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния дСконструктора опрСдСляСмыС Π½Π°Π»Π΅Ρ‚Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ (int ΠΏ ΠΈ double Π³) ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ значСния Π°Π²Ρ‚ΠΎΡ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹Ρ… свойств. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

Numb = 3; Radius = 1.

Для упрощСния Π²Ρ‹Π·ΠΎΠ²Π° дСконструктора Π² C# 7.0 Π²Π²Π΅Π΄Π΅Π½ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ синтаксис:

(список_Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²) = ссылка_Π½Π°_ΠΎΠ±ΡŠΠ΅ΠΊΡ‚;

Π’ ΡΠΏΠΈΡΠΊΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Ρ‚ΠΈΠΏΡ‹ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ спСцификации Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… (с ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ out) ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² дСконструктора. Как ΠΈ ΠΏΡ€ΠΈ нСпосрСдствСнном ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Π΄Π΅ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρƒ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΈΠ³Ρ€Π°ΡŽΡ‰ΠΈΠ΅ Ρ€ΠΎΠ»ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ «Π½Π° Π»Π΅Ρ‚Ρƒ», Ρ‚. Π΅. Π² ΡΠΏΠΈΡΠΊΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Однако (Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΡΠΏΠΈΡΠΊΠ° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² прямого Π²Ρ‹Π·ΠΎΠ²Π° дСконструктора) Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ (Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ ΠΈΡ… ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΠΈ «Π½Π° Π»Π΅Ρ‚Ρƒ») Π½Π΅ ΡΠ½Π°Π±ΠΆΠ°ΡŽΡ‚ся ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ out.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ обращСния ΠΊ Π΄Π΅ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρƒ с Ρ‚рСмя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, ΠΊΠΎΠ³Π΄Π° Ρ‚ΠΈΠΏΡ‹ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ «Π½Π° Π»Π΅Ρ‚Ρƒ»:

(int nv, double rv, double pv) = poly;

Console.WriteLine («Numb = «+ nv +.

"; Radius = «+ rv + «; Perimeter = «+ pv);

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

Numb = 3; Radius = 1; Perimeter = 10,39 230 484Π‘4133.

Π’ΠΎΡ‚ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½, Ссли Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ обращСния ΠΊ Π΄Π΅ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρƒ Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ:

int nv;

double rv, pv;

(nv, rv, pv) = poly;

Π’Π°ΠΊ ΠΊΠ°ΠΊ спСцификация ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² дСконструктора ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ опрСдСляСт трСбования ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌ, Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ нСявной Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ обращСния ΠΊ Π΄Π΅ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρƒ с Π΄Π²ΡƒΠΌΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, ΠΊΠΎΠ³Π΄Π° Ρ‚ΠΈΠΏΡ‹ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ компилятор:

(var num, var rad) = poly;

Console.WriteLine («Numb = «+ num + Radius = «+ rad);

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

Numb = 3; Radius = 1.

Допустимо ΠΈ Ρ‚Π°ΠΊΠΎΠ΅ сокращСниС записи Π²Ρ‹Π·ΠΎΠ²Π° дСконструктора:

var (num, rad) = poly;

Если ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Π΄Π΅ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρƒ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‚ΠΎ Π²ΠΌΠ΅ΡΡ‚ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΈΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ подстановку: «_». НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄:

var (_, perimeter) = poly;

Console.WriteLine («Perimeter = «+ perimeter);

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

Perimeter = 10,3 923 048 454 133.

Π”ΠΎ ΡΠΈΡ… ΠΏΠΎΡ€ ΠΌΡ‹ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π»ΠΈ возмоТности дСконструкторов Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ класса, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ программистом, ΠΊΠΎΠ³Π΄Π° дСконструктор ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ нСпосрСдствСнно Π² ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΠΈ класса.

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. БиблиотСчная структура Complex ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ пространству ΠΈΠΌΠ΅Π½ System. Numerics ΠΈ Π½Π°Ρ…одится Π² ΡΠ±ΠΎΡ€ΠΊΠ΅ System.Numerics.dll.

Для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ сборки ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π² ΠΎΠ±ΠΎΠ·Ρ€Π΅Π²Π°Ρ‚Π΅Π»Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ «Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ» список ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡƒΠ½ΠΊΡ‚ «ΡΡΡ‹Π»ΠΊΠΈ». Из Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΠ²ΡˆΠ΅Π³ΠΎΡΡ мСню Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΡƒΠ½ΠΊΡ‚ «Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ссылку…», Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ «ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ссылок» Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡƒΠ½ΠΊΡ‚ «System.Numerics» ΠΈ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ «ΠžΠš».

Π§Ρ‚ΠΎΠ±Ρ‹ сборка стала доступна Π² ΠΊΠΎΠ΄Π΅, потрСбуСтся Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°:

using System. Numerics; // ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½ для Complex

Π’ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π΅ Complex Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ свойства:

Imaginary — мнимая Ρ‡Π°ΡΡ‚ΡŒ комплСксного числа;

Magnitude — ΠΌΠΎΠ΄ΡƒΠ»ΡŒ (Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) комплСксного числа; Phase — Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ (Ρ„Π°Π·Π°) комплСксного числа;

Real — вСщСствСнная Ρ‡Π°ΡΡ‚ΡŒ комплСксного числа Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΈΠ· ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ€Π° структуры Ρ‚ΠΈΠΏΠ° Complex значСния пСрСчислСнных свойств, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ статичСский класс ComplexHelper с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ-дСконструктором, Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‰ΠΈΠΌ возмоТности Ρ‚ΠΈΠΏΠ° Complex. ВСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с ΡΡ‚ΠΈΠΌ классом:

using System;

using System. Numerics; // Для Ρ‚ΠΈΠΏΠ° «Complex» … public static class ComplexHelper {.

// ДСконструктор (Π²Π΅Ρ€Π½Π΅Ρ‚ всС свойства экзСмпляра): public static void Deconstruct (this Complex cm, out double magnitude, out double phase, out double real, out double image).

{

magnitude = cm. Magnitude; phase = cm. Phase; real = cm. Real; image = cm. Imaginary;

>

} // class ComplexHelper class Program {.

static void Main ().

{

Complex cmp = new Complex (4, 6);

(double module, double argument, _, _) = cmp;

Console.WriteLine («module = «+ module);

Console.WriteLine («argument = «+ argument);

} }

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

module = 7,21 110 255 092 798 argument = 0,982 793 723 247 329.

Π£ Π΄Π΅ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Π° ΠΏΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ с ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ this соотносит ΠΌΠ΅Ρ‚ΠΎΠ΄ с ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ€ΠΎΠΌ структуры Complex. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ названиям значСния свойств комплСксного числа. Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Main () создан экзСмпляр структуры Complex ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ этот экзСмпляр ссылка (Complex cmp). ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρƒ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° — значСния вСщСствСнной ΠΈ ΠΌΠ½ΠΈΠΌΠΎΠΉ частСй комплСксного числа. Они извСстны ΠΈΠ· ΠΊΠΎΠ΄Π° Π²Ρ‹Π·ΠΎΠ²Π° конструктора, поэтому ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Π΄Π΅ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρƒ явно Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π½Π° Π»Π΅Ρ‚Ρƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ для Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‰ΠΈΡ… значСния модуля ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° комплСксного числа. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹Π΅ значСния.

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ вопросы ΠΈ Π·Π°Π΄Π°Π½ΠΈΡ

  • 1. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ инкапсуляции ΠΈ Π΅Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊ ΠΊΠ»Π°ΡΡΠ°ΠΌ.
  • 2. Π’ Ρ‡Π΅ΠΌ отличия свойств ΠΎΡ‚ ΠΏΠΎΠ»Π΅ΠΉ?
  • 3. ΠŸΡ€ΠΈΠ²Π΅Π΄ΠΈΡ‚Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ объявлСния свойства.
  • 4. КакиС ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΠΈ свойства?
  • 5. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ‚ΠΈΠΏ свойства?
  • 6. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ‚Π΅Π»ΠΎ аксСссора Π² ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΠΈ свойства?
  • 7. КакиС ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ допустимы Π² ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΠΈ аксСссора?
  • 8. Каким ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ прСдставлСно Π² set-аксСссорС Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства?
  • 9. Как ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства, ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния?
  • 10. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π°Π²Ρ‚ΠΎΡ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹Ρ… свойств.
  • 11. Π’ ΠΊΠ°ΠΊΠΎΠΌ случаС для Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ свойства ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ синтаксис сТатия Π΄ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡ?
  • 12. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ скрытыС поля?
  • 13. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ Ρ€ΠΎΠ»ΡŒ слуТСбного слова this Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ‚ΠΎΡ€Π΅.
  • 14. ΠœΠΎΠΆΠ΅Ρ‚ Π»ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ классС Π±Ρ‹Ρ‚ΡŒ нСсколько индСксаторов?
  • 15. Какой Ρ‚ΠΈΠΏ допустим для ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° индСксатора?
  • 16. Π’ ΠΊΠ°ΠΊΠΎΠΌ случаС для индСксатора Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ синтаксис сТатия Π΄ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡ?
  • 17. НазовитС особСнности Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‰Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.
  • 18. Какими способами ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‰ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ?
  • 19. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ дСконструктор?
  • 20. КакиС ограничСния Π½Π°Π»ΠΎΠΆΠ΅Π½Ρ‹ Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ дСконструктора?
  • 21. Π’ Ρ‡Π΅ΠΌ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ²Π° дСконструктора?
  • 22. Как ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Π΄Π΅ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρƒ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ значСния Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°?
ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ